使用正则表达式,如何匹配连续四位数以外的所有内容?以下是我可能正在使用的示例文本:
foo1234bar
baz 1111bat
asdf 0000 fdsa
a123b
匹配可能如下所示:
"foo", "bar", "baz ", "bat", "asdf ", " fdsa", "a123b"
以下是我自己提出的一些正则表达式,它们无法捕获我需要的所有内容:
[^\d]+ (this one includes a123b)
^.*(?=[\d]{4}) (this one does not include the line after the 4 digits)
^.*(?=[\d]{4}).* (this one includes the numbers)
关于如何在四位数序列之前和之后获得匹配的任何想法?
答案 0 :(得分:4)
您尚未指定自己的应用语言,但实际上每种应用语言都有分割功能,如果您在\d{4}
分割,您将获得所需的内容。
例如在java中:
String[] stuffToKeep = input.split("\\d{4}");
答案 1 :(得分:1)
答案 2 :(得分:0)
在 Python 中,以下内容与您想要的非常接近:
In [1]: import re
In [2]: sample = '''foo1234bar
...: baz 1111bat
...: asdf 0000 fdsa
...: a123b'''
In [3]: re.findall(r"([^\d\n]+\d{0,3}[^\d\n]+)", sample)
Out[3]: ['foo', 'bar', 'baz ', 'bat', 'asdf ', ' fdsa', 'a123b']