.* match zero or more characters other than line terminators
(?= begin a positive lookahead
(?: begin a non-capture group
\s match one whitespace character
\S+ match one or more non-whitespace characters
){2} end the non-capture group and execute it twice
$ match the end of the string
) end the positive lookahead
4条答案
按热度按时间von4xj4u1#
不需要正则表达式,
awk
更适合这里:sqougxex2#
使用多行选项,您可以 * 锚定 * 搜索到每行
$
的 * 结尾然后:
用空字符串替换
https://regex101.com/r/HqoV9K/1
6qqygrtg3#
我相信其他一些对正则表达式了解最多的人能够写出更好的模式,但我的尝试是:
Regex fiddle
xe55xuns4#
通过匹配以下正则表达式,您可能更愿意保留所需的部分,而不是删除不需要的部分。
这个表达式可以分解如下。
这里假设regex引擎支持lookaheads(大多数都支持)。
如果可以有多个空格分隔“字段”,则需要稍微调整:
这Assert要匹配的字符串以非空白字符结尾。但是,它假定要返回的字符串不为空。如果要返回的字符串可能为空,则可以使用 negative lookbehind(如果regex引擎支持)。
负lookbehind
(?<!\s)
Assert空格字符不能位于后面的匹配项之前,该匹配项以空格字符开始。如果空格实际上必须是常规空格,则应使用空格字符代替
\s
。例如,Demo