Regex 如何查找未以指定字符结尾的子字符串的第一次出现
我将选择第一个出现的字母字符串,该字符串不以任何字符Regex 如何查找未以指定字符结尾的子字符串的第一次出现,regex,regex-negation,Regex,Regex Negation,我将选择第一个出现的字母字符串,该字符串不以任何字符“,”:“和”;“ 例如: "float a bbc 10" --> "float" "float.h" --> null "float:: namespace" --> "namesapace" "float;" --> null 我提出了正则表达式\G([A-z]+)(?![:;\.]),但它只忽略禁用字符之前的字符,而我需要它跳过禁用字符之前的所有字符串。您可以使用 /(?<!\S)[A-Za-z]++(?
“
,”:“
和”;“
例如:
"float a bbc 10" --> "float"
"float.h" --> null
"float:: namespace" --> "namesapace"
"float;" --> null
我提出了正则表达式\G([A-z]+)(?![:;\.])
,但它只忽略禁用字符之前的字符,而我需要它跳过禁用字符之前的所有字符串。您可以使用
/(?<!\S)[A-Za-z]++(?![:;.])/
/(?
请参阅。确保不要使用g
修饰符仅获取第一个匹配项
这里的一个主要技巧是使用a匹配所有连续的字母,并在最后一个匹配的字母之后只检查一次:
,;
或
图案细节
(?-空格或字符串开头应紧跟在当前位置之前
[A-Za-z]++
-1+个字母以所有格匹配,不允许回溯到模式中
(?![:;。])
-如果当前位置右侧有一个;
、:
或
,则会导致匹配失败的负前瞻
无论是第一次还是所有出现,都是用代码完成的。您需要的正则表达式是(?)或(?)嗯,您最好使用^.*\K(?(PCRE)或在^.*.*(?@WiktorStribiżew是的,它工作正常,我正在使用Perl和(?工作得很好。谢谢,伙计!