我有一个文字:
'1 2 3 ab AB úá awindow BCwindow'
目前我只使用这个正则表达式:[a-zA-Zá-ú]+
,这就是结果:
['ab', 'awindow', 'bcwindow', 'úá']
我想删除'window'字符串字词来获取此字段:
['ab','a','bc','úá']
感谢。
答案 0 :(得分:1)
如果单词 window 总是出现在匹配单词的末尾,您可以这样做:
(?<!\S)[a-zA-Zá-ú]+?(?:(?!\S)|(?=window))
这可以确保您在单词之前没有额外的非空格字符(防止匹配从较长字符串的中间开始)或跟随它。您可以改为使用单词边界\b
:
\b[a-zA-Zá-ú]+?(?:\b|(?=window))
故障:
\b
匹配单词边界位置(单词开头的位置)[a-zA-Zá-ú]+?
至少有一次与班级中的角色匹配,不合时宜(?:
开始非捕获组
\b
匹配单词边界(此处我们指的是单词结尾)|
或(?=window)
一个积极的前瞻,断言后面的字符是window
)
非捕获组结束每当第二个字边界匹配或正向前导断言时,引擎就会满足,并且到那一点的每个东西都会作为匹配返回。