使用 REGEX 进行案例分析
Case analysis with REGEX
我有一些数据,例如
small_animal/Mouse
BigAnimal:Elephant
Not an animal.
我想得到的是:
Mouse
Elephant
Not an animal.
因此,我需要一个正则表达式来搜索 /
或 :
,如下所示:如果找到其中一个,则获取该字符后面的文本。如果 /
和 :
都不存在,取整个字符串。
我尝试了很多。例如,这适用于老鼠和大象,但不适用于第三行:
(?<=:)[^:]*|(?<=/)[^/]*
这将始终给出完整的字符串...
(?<=:)[^:]*|(?<=/)[^/]*|^.*$
我的头在燃烧^^也许,有人可以帮忙吗? :) 非常感谢!
编辑:
@The fourth bird 为单个字符提供了一个很好的解决方案。但是,如果我想搜索像
这样的字符串怎么办?
animal::Dog
Another123Cat
Not an animal.
如何拆分 ::
或 123
?
你可能会用到
^(?:[^:/]*[:/])?\K.+
^
字符串开头
(?:[^:/]*[:/])?
可选择匹配除 :
或 /
之外的任何字符,直到匹配 :
或 /
\K
忘记目前匹配的是什么
.+
匹配任意字符 1 次以上
如果不想跨行,可以将字符class扩展为[^:/\r\n]*
另一种选择可能是使用交替
^[^:/]*[:/]\K.+|.+
或者通过匹配您要省略的内容来使用 SKIP FAIL 方法
^[^:/]*[:/](*SKIP)(*F)|.+
如果你想使用多个字符,你也可以使用
^(?:(?:(?!123|::|[:/]).)*+(?:123|::|[:/]))?\K.+
我有一些数据,例如
small_animal/Mouse
BigAnimal:Elephant
Not an animal.
我想得到的是:
Mouse
Elephant
Not an animal.
因此,我需要一个正则表达式来搜索 /
或 :
,如下所示:如果找到其中一个,则获取该字符后面的文本。如果 /
和 :
都不存在,取整个字符串。
我尝试了很多。例如,这适用于老鼠和大象,但不适用于第三行:
(?<=:)[^:]*|(?<=/)[^/]*
这将始终给出完整的字符串...
(?<=:)[^:]*|(?<=/)[^/]*|^.*$
我的头在燃烧^^也许,有人可以帮忙吗? :) 非常感谢!
编辑:
@The fourth bird 为单个字符提供了一个很好的解决方案。但是,如果我想搜索像
这样的字符串怎么办?animal::Dog
Another123Cat
Not an animal.
如何拆分 ::
或 123
?
你可能会用到
^(?:[^:/]*[:/])?\K.+
^
字符串开头(?:[^:/]*[:/])?
可选择匹配除:
或/
之外的任何字符,直到匹配:
或/
\K
忘记目前匹配的是什么.+
匹配任意字符 1 次以上
如果不想跨行,可以将字符class扩展为[^:/\r\n]*
另一种选择可能是使用交替
^[^:/]*[:/]\K.+|.+
或者通过匹配您要省略的内容来使用 SKIP FAIL 方法
^[^:/]*[:/](*SKIP)(*F)|.+
如果你想使用多个字符,你也可以使用
^(?:(?:(?!123|::|[:/]).)*+(?:123|::|[:/]))?\K.+