Python 正则表达式在一行中精确查找4个十进制值
我需要正则表达式的帮助来查找文件中的特定块。这些块有4个带逗号和空格分隔符的十进制数。例如:Python 正则表达式在一行中精确查找4个十进制值,python,regex,string-matching,Python,Regex,String Matching,我需要正则表达式的帮助来查找文件中的特定块。这些块有4个带逗号和空格分隔符的十进制数。例如: 1.23,4.567 8.9,10.1112 我需要的正则表达式是: 十进制,十进制,十进制(正好4个值) Thx寻求帮助。最好使用下面这样的锚定正则表达式 r'^\D*\d+\.\d+,\d+\.\d+ \d+\.\d+,\d+\.\d+\D*$' \D*匹配任何非数字字符,零次或多次 示例: >>> s = ['1.23,4.567 8.9,10.1112', '1.23,4.
1.23,4.567 8.9,10.1112
我需要的正则表达式是:
十进制,十进制,十进制(正好4个值)
Thx寻求帮助。最好使用下面这样的锚定正则表达式
r'^\D*\d+\.\d+,\d+\.\d+ \d+\.\d+,\d+\.\d+\D*$'
\D*
匹配任何非数字字符,零次或多次
示例:
>>> s = ['1.23,4.567 8.9,10.1112', '1.23,4.567 8.9,10.1112 1.2,3.45', 'text 1.23,4.567 8.9,10.1112 text']
>>> for i in s:
if re.match(r'^\D*\d+\.\d+,\d+\.\d+ \d+\.\d+,\d+\.\d+\D*$', i):
print(i)
1.23,4.567 8.9,10.1112
text 1.23,4.567 8.9,10.1112 text
仅打印块
>>> for i in s:
m = re.match(r'^\D*(\d+\.\d+,\d+\.\d+ \d+\.\d+,\d+\.\d+)\D*$', i)
if m:
print(m.group(1))
1.23,4.567 8.9,10.1112
1.23,4.567 8.9,10.1112
请试试这个:
^\D*([\d\.]+,[\d\.]+\s[\d\.]+,[\d\.]+)\D*$
我想这会解决你的问题。我用上面的正则表达式附加了屏幕截图。我希望这对你有帮助
这里有一个更简单的版本。我假设“,”和“空白”中的任何一个将数字(用十进制数)分开 如果你认为有一种模式既有“,”又有“空间”
你在运行哪种语言?语言是Python。好的,我试试这个。谢谢
^\D*([\d\.]+,[\d\.]+\s[\d\.]+,[\d\.]+)\D*$
/(\d+\.\d+(,|\s+)?){4}/
/(\d+\.\d+,\s+){4}/