Regex 正则表达式未捕获包含句点的组
我正在使用正则表达式来匹配任何以字母开头的字符串,类似于Regex 正则表达式未捕获包含句点的组,regex,Regex,我正在使用正则表达式来匹配任何以字母开头的字符串,类似于G71P100Q110U0W0F.01。我已经想出了([A-Z].*)(=[A-Z]),在我到达F.01停止匹配之前,它运行良好。据我所知,*?应该惰性地匹配任何东西,但它不是。我需要添加什么来包括该期间 编辑: 字符串G71P100Q110U0W0F.01的所需匹配项为G71、P100、Q110、U0、W0和F.01。我可以在VBA中很容易地迭代匹配。您可以删除前瞻:(?=[A-Z])。即。您的正则表达式将简化为([A-Z].*) 此前瞻
G71P100Q110U0W0F.01
。我已经想出了([A-Z].*)(=[A-Z])
,在我到达F.01
停止匹配之前,它运行良好。据我所知,*?
应该惰性地匹配任何东西,但它不是。我需要添加什么来包括该期间
编辑:
字符串
G71P100Q110U0W0F.01
的所需匹配项为G71
、P100
、Q110
、U0
、W0
和F.01
。我可以在VBA中很容易地迭代匹配。您可以删除前瞻:(?=[A-Z])
。即。您的正则表达式将简化为([A-Z].*)
此前瞻确保在*
结尾后至少有一个大写字符。但是,您已经在正则表达式的开头匹配了一个大写字符:([a-Z]…)
。所以你需要两个大写字符,但你只有一个
不幸的是,我不明白你想要什么和不想要什么的规则。如果有更多匹配和不匹配字符串的示例,那就太酷了
这个正则表达式可能对您有好处:
([A-Z].*?)\.[0-9]+
它确保您的文本:
- 以大写字母开头
- 以点结束,然后是一个或多个数字
.您要做的是:
[A-Z][^A-Z]*
匹配大写字母,然后匹配除大写字母以外的任何字符
据我所知,*?
应该与任何内容都匹配
而这正是正在发生的事情。它在发现以下字符是大写字母后立即停止。尝试以下操作:
[A-Z]\.?[0-9]+
句点必须转义。我假定您正在查找与以字母开头的非空格字符序列匹配的正则表达式模式:
\b[a-zA-Z]\S*
[A-Z][^A-Z\s]+
匹配单个字母[A-Z]
匹配任何非空格或字母的内容[^A-Z\s]+
var input=“G71P100Q110U0W0F.01”
console.log(input.match(/[A-Z][^A-Z\s]+/g))
您可以使用:([A-Z].*)(=[A-Z.])
您想要任何以字母开头或以字母结尾的内容吗?末尾的前向排序意味着后者。除非应用了所有匹配项,否则它将停止在P
。您可以尝试([A-Z].*)(=[A-Z]|$)
@tjb1这里有很多选项,但我认为[A-Z][^A-Z\s]+
是下面代码演示中最简单的答案。