首页 > 解决方案 > 正则表达式环视行首

问题描述

我有这个正则表达式https://regex101.com/r/wRBBAz/1

(?<=\s|^|\.)[^ \.]+(?=\s*(\())

输入测试

test1 {...}
test2();

我在环视中指定了行首 (^),所以我不明白它为什么选择

}
test2

而不仅仅是

test2

标签: javascriptregex

解决方案


问题是[^ .]匹配除空格和点之外的任何字符,也就是说,它匹配换行符。

您可以使用

(?<![^.\s])[^\s.]+(?=\s*(\())

查看正则表达式演示

细节

  • (?<![^.\s])- 匹配位于字符串开头或紧接在点或空格前面的位置的否定后向查找
  • [^\s.]+-除空格外的任何一个或多个字符和.
  • (?=\s*(\())- 一个肯定的前瞻,确保有零个或多个 whitespces,然后(在当前位置的右侧有一个(捕获到第 1 组)。

推荐阅读