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

Regex 正则表达式可能的空格和尾随字符,regex,Regex,我有类似于以下内容的文本(有意使用空格),我逐行运行正则表达式: Smith-Petersen X1l Jonas Henry Foord. 82a 221. 12345 Somewhere 现在,我想使用正则表达式在第一个匹配组中出现3个或更多空格(可能出现也可能不出现)之前捕获任何内容。允许的字符数: [a-zA-Z0-9,. '\-AÖÜäöüß] 我想要的是:Smith Peterse

我有类似于以下内容的文本(有意使用空格),我逐行运行正则表达式:

 Smith-Petersen                 X1l
Jonas Henry           
Foord. 82a                     221.
 12345 Somewhere 
现在,我想使用正则表达式在第一个匹配组中出现3个或更多空格(可能出现也可能不出现)之前捕获任何内容。允许的字符数:

[a-zA-Z0-9,. '\-AÖÜäöüß]
我想要的是:
Smith Petersen
Jonas Henry
Foord。82a
12345某处
。 在拼命尝试之后,我希望能在这里找到帮助…我只是无法让它工作,因为我的表达抓住了空白和接下来的内容,并将其放入第一组。有没有办法逆转正则表达式的方式?有人能帮我解决这个问题吗?

假设“可能发生或可能不发生”,您的意思是在遇到3个空格之前行可能结束:

^\s*([-a-zA-Z0-9,\.'AÖÜäöüß ]+?)(?=\s{3}|\s{0,2}$)
这个正则表达式使用正向前瞻来断言输入后面有3个空格,或者输入后面最多有2个空格

输入起始点的锚点避免与较长行末尾的垃圾匹配

你的目标在第一组

请参见a以下是我的方法

^ *([a-zA-Z0-9,.'AÖÜäöüß-]+(?: {1,2}[a-zA-Z0-9,.'AÖÜäöüß-]+)*)
你想要的是第一组比赛。这个正则表达式只使用贪婪运算符,并且适用于示例文本中的所有四种情况


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

现在比我的好得多:)我在.Net中测试了这个,似乎范围{,2}在那里不起作用。我必须将它改为{0,2}才能工作。OP可能需要记住这一点,这取决于他使用的正则表达式引擎。是的,.Net,谢谢你提供的信息!我回到办公室后会试试这个