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,谢谢你提供的信息!我回到办公室后会试试这个