我的文本类似于以下内容(预期的空格),我逐行运行RegEx:
Smith-Petersen X1l
Jonas Henry
Foord. 82a 221.
12345 Somewhere
我现在想要使用RegEx在第一个匹配组中出现3个或更多空格(可能会或可能不会发生)之前捕获任何内容。允许的字符:
[a-zA-Z0-9,. '\-AÖÜäöüß]
我想要的是:Smith-Petersen
,Jonas Henry
,Foord. 82a
和12345 Somewhere
。
在绝望地尝试之后,我希望在这里找到帮助...我只是无法让它工作,因为我的表达抓住空白和后面的内容并将其放入第一组。有没有办法扭转RegEx的方式?任何人都可以帮我这个吗?
答案 0 :(得分:4)
假设“可能发生或可能不发生”,表示该行可能在遇到3个空格之前结束:
^\s*([-a-zA-Z0-9,\.'AÖÜäöüß ]+?)(?=\s{3}|\s{0,2}$)
这个正则表达式正在使用一个积极的前瞻来断言要么有3个空格,要么最多2个空格然后输入结束。
开始输入的锚点可以避免在较长行的末尾匹配垃圾。
您的目标位于第1组。
答案 1 :(得分:1)
这是我的方法。
^ *([a-zA-Z0-9,.'AÖÜäöüß-]+(?: {1,2}[a-zA-Z0-9,.'AÖÜäöüß-]+)*)
你想要的是匹配组1.这个正则表达式只使用贪婪的运算符,适用于示例文本中的所有四种情况。
基本上它匹配一行开头的所有单词,这些单词彼此相隔不超过两个空格。一旦找到超过2个空格,匹配就完成了。