我正在寻找正则表达式。
我有一个随机文本,在文本中有几个长度为9的数字。
示例:
Test1: "no results!"<br>
Test2: 123456789 Problems with ...<br>
Problem xyz -567891234 Problems with ...<br>
Test4: 987654321 kjdfk sakjsahfkldjasf kj
我想提取出有这样结果的数字:
123456789, 567891234, 987654321
我可以用正则表达式找到数字:
\d{9}
我的想法是搜索随机字符,直到找到一个数字,然后用“,”替换它。但我不能为它正常表达。这是我的尝试:
.*(\d{9}) and then replace with $1 ,
但这不起作用。请有人帮帮我吗?
答案 0 :(得分:0)
更好的想法是使用您的编程语言的字符串连接方法。例如,在Python中:
>>> s = """Test1: "no results!"
... Test2: 123456789 Problems with ...
... Problem xyz -567891234 Problems with ...
... Test4: 987654321 kjdfk sakjsahfkldjasf kj"""
>>> ", ".join(re.findall(r"\d{9}", s))
'123456789, 567891234, 987654321'
如果你想只使用正则表达式获得相同的结果,你需要分两步完成,这两个步骤都不重要:
>>> temp = re.sub(r"(?s)^.*?(?=\d{9})|(?<=\d{9})(?:(?!\d{9}).)*$", "", s)
>>> temp
'123456789 Problems with ...\nProblem xyz -567891234 Problems with ...\nTest4: 9
87654321'
>>> re.sub(r"(?s)(?!$)(?<=\d{9})(?:(?!\d{9}).)*", ", ", temp)
'123456789, 567891234, 987654321'
答案 1 :(得分:0)
^.*?(\d{9}).*$
您可以使用re.sub
尝试此操作。请参阅演示。
http://regex101.com/r/yR3mM3/34
import re
ll=[]
p = re.compile(r'^(?:.*?(\d{9}))+.*$', re.Multiline)
subst = "\1"
for line in test_data:
ll.append(re.sub(p, subst, line))