正则表达式不捕获包含句点

时间:2018-05-22 13:56:51

标签: regex

我正在使用正则表达式来匹配任何以类似于G71P100Q110U0W0F.01的字符串中的字母开头的内容。我提出了([A-Z].*?)(?=[A-Z]),它可以正常工作,直到我停止匹配F.01。从我读过的内容来看,.*?应该懒得匹配,但事实并非如此。我需要添加什么来包含句号?

编辑:

字符串G71P100Q110U0W0F.01的所需匹配项为G71P100Q110U0W0和{{1} }。我可以在VBA中轻松地遍历比赛。

5 个答案:

答案 0 :(得分:1)

您可以删除前瞻:(?=[A-Z])。一,E。您的正则表达式将简化为([A-Z].*?)

此前瞻确保在.*结束后至少会有一个大写字符。但是,您已经在正则表达式的开头匹配了一个大写字符:([A-Z]...)。所以你需要两个大写字符,但你只有一个。

不幸的是,我不了解您想要的规则并且不想匹配。如果有更多匹配和不匹配字符串的示例,那将会很酷。

这个正则表达式可能对你有好处:

([A-Z].*?)\.[0-9]+

确保您的文字:

  • 以大写字母开头
  • 以点结尾,然后是一个或多个数字

http://mywebsite.in/wfengine/search/filters

答案 1 :(得分:0)

您要做的是:

[A-Z][^A-Z]*

匹配大写字母,然后匹配大写字母。

Live demo

  

从我所读过的内容来看,.*?应该与任何懒惰相匹配......

它确实发生了什么。它在发现后面的字符是大写字母后立即停止。

答案 2 :(得分:0)

试试这个:

[A-Z]\.?[0-9]+

必须转义句号。

答案 3 :(得分:0)

我假设你正在寻找一个与字母开头的非空格字符序列相匹配的正则表达式模式:

\b[a-zA-Z]\S*

答案 4 :(得分:0)

[A-Z][^A-Z\s]+

  • [A-Z]匹配一个字母
  • [^A-Z\s]+匹配任何不是空格或字母
  • 的内容

运行演示代码示例

var input = "G71P100Q110U0W0F.01"
console.log(input.match(/[A-Z][^A-Z\s]+/g))