所以我试图将以下两个格式化为:
的组分开:FIRST - GrouP second.group.txt
第一组可以包含任意字符第二组是一个以点(.)分隔的字符串。
我使用下面的正则表达式来分隔这两组:
([A-Z].+).*?([a-z]+.[a-z]+)
然而,它给出了一个错误的结果:
1: FIRST - GrouP second.grou
2: p.txt
我不明白,因为我使用了"非贪婪"分隔符(.*?)而不是贪婪分隔符(。*)
我在这里做错了什么?
谢谢
你可以使用这个正则表达式来匹配两个组:
b([A-Z].+?)s*b([a-z]+(?:.[a-z]+)+)b
RegEx演示
分手:
b # word boundary
([A-Z].+?) # match [A-Z] followed by 1 or more chars (lazy)
s* # match 0 or more spaces
b # word boundary
([a-z]+ # match 1 or more of [a-z] chars
(?:.[a-z]+)+) # match a group of dot followed by 1 or more [a-z] chars
b # word boundary
PS: (?:..)
用于非捕获组
这是一个可能的解决方案,应该非常紧凑:
(.*?-s*S+)|(S+.?)+
https://regex101.com/r/iW8mE5/1 查找任何后跟破折号、零个或多个空格以及非空白字符的字符。如果没有找到,它将查找后跟可选小数的非空白。