想象一下,我们要从文件中提取所有以1
开头并以aa>>>
结尾的字符串。
因此我们将使用此正则表达式:
1(.*)+a{2}>>>$
此正则表达式将返回包含aa>>>
的所有值
例如,在32 123.123.bmp aa>>>
上测试正则表达式,它将返回123.123.bmp aaa>>>
是否可以从结果中排除aa>>>
?
对于上述示例,我希望将123.123.bmp
作为结果。
答案 0 :(得分:2)
您可以使用
1.*?(?=\s*a{2}>>>$)
请参见regex demo
详细信息
1
-1
字符.*?
-任意0个以上的字符,尽可能少(?=\s*a{2}>>>$)
-一个正数lokahead(一种非消耗性模式,不会将匹配的文本添加到整个匹配项(第0组)值中),它需要(立即位于当前位置的右侧):
\s*
-超过0个空格a{2}
-两个a
>>>$
->>>
放在字符串的末尾。要仅在1
后面没有其他数字时进行匹配,请在后面使用(?<!\d)
:
(?<!\d)1.*?(?=\s*a{2}>>>$)
或单词边界:
\b1.*?(?=\s*a{2}>>>$)