我有一个字符串==a==123==b==456==c==879
,我想获取字母和数字。
我尝试使用expr ==(.*?)==(.*?)
。
这给了我
Match 1
1. a
2.
Match 2
1. b
2.
Match 3
1. c
2.
...但是缺少数字。我怎样才能得到它们?
我想得到这个: 这给了我
Match 1
1. a
2. 123
Match 2
1. b
2. 456
Match 3
1. c
2. 789
我相信我必须使用一个负的超前运算符,但是我不知道在这种情况下它是如何工作的。
(仅在此示例中,字母和数字分开。实际上,我只能用==
分开。)
答案 0 :(得分:1)
您可以使用以下命令让正则表达式匹配==
或字符串末尾
==(.*?)==(.*?)(?===|$)
==([\s\S]*?)==([\s\S]*?)(?===|$) # To also match line breaks in between ==
(?s)==(.*?)==(.*?)(?===|$) # Also matches line breaks in between == in PHP and many other flavors but Ruby
(?m)==(.*?)==(.*?)(?===|\Z) # To also match line breaks in between == in Ruby
详细信息
==
-两个=
字符的字符串(.*?)
-第1组:除换行符以外的任何0个或多个字符,并且尽可能少==(.*?)
-==
和第2组匹配除换行符以外的任何0个或多个字符,且尽可能少(?===|$)
-正向超前,需要==
或当前位置右边的字符串结尾。