正则表达式可能是空格和尾随字符

时间:2013-07-09 14:10:45

标签: regex

我的文本类似于以下内容(预期的空格),我逐行运行RegEx:

 Smith-Petersen                 X1l
Jonas Henry           
Foord. 82a                     221.
 12345 Somewhere 

我现在想要使用RegEx在第一个匹配组中出现3个或更多空格(可能会或可能不会发生)之前捕获任何内容。允许的字符:

[a-zA-Z0-9,. '\-AÖÜäöüß]

我想要的是:Smith-PetersenJonas HenryFoord. 82a12345 Somewhere。 在绝望地尝试之后,我希望在这里找到帮助...我只是无法让它工作,因为我的表达抓住空白和后面的内容并将其放入第一组。有没有办法扭转RegEx的方式?任何人都可以帮我这个吗?

2 个答案:

答案 0 :(得分:4)

假设“可能发生或可能不发生”,表示该行可能在遇到3个空格之前结束:

^\s*([-a-zA-Z0-9,\.'AÖÜäöüß ]+?)(?=\s{3}|\s{0,2}$)

这个正则表达式正在使用一个积极的前瞻来断言要么有3个空格,要么最多2个空格然后输入结束。

开始输入的锚点可以避免在较长行的末尾匹配垃圾。

您的目标位于第1组。

查看live demo on rubular

答案 1 :(得分:1)

这是我的方法。

^ *([a-zA-Z0-9,.'AÖÜäöüß-]+(?: {1,2}[a-zA-Z0-9,.'AÖÜäöüß-]+)*)

你想要的是匹配组1.这个正则表达式只使用贪婪的运算符,适用于示例文本中的所有四种情况。

基本上它匹配一行开头的所有单词,这些单词彼此相隔不超过两个空格。一旦找到超过2个空格,匹配就完成了。