我是Python和正则表达式的初学者,现在我尝试处理一个练习,听起来像这样:
你如何编写一个与逗号匹配的正则表达式 每三位数?它必须符合以下条件:
'42'
'1234'
'6368745'
但不是以下内容:
'12,34,567'(逗号之间只有两位数字)
'1234'(缺少逗号)
我觉得这很容易,但我已经花了几个小时仍然没有写回答。甚至连本练习书中的答案根本不起作用(书中的模式是^\d{1,3}(,\d{3})*$
)
提前谢谢!
答案 0 :(得分:1)
你书中的答案对我来说似乎是正确的。它适用于您提供的测试用例。
(^\d{1,3}(,\d{3})*$)
'^'
符号表示在行的开头搜索整数。 d{1,3}
告诉我应该至少有一个整数但不超过3个;
1234,123
无效。
(,\d{3})*$
这个表达式告诉我们应该有一个逗号,后面跟三个整数一样多。
也许您正在寻找的答案是:
(^\d+(,\d{3})*$)
每三位数字与逗号匹配,而不会限制逗号之前大于3位的数字。
答案 1 :(得分:0)
答案 2 :(得分:0)
我通过将胡萝卜和美元之间的东西放在括号中来完成工作: <div class="suppliers-blog-thumbnail">
<a target="_blank" class="image_center" href="http://amico-securityproducts.com/lath.htm">
<div class="bg-responsive" style="background-image: url('http://workspace3.joefoster.org/wp-content/uploads/2017/09/7b6442_1488bc59e28f439b89b942afef0f7646-mv2.gif');"></div>
<span class="suppliers-overlay"> </span>
</a>
</div>
但是我发现这个正则表达式没用,因为你不能用它在文档中找到这些数字,因为字符串必须以完全短语开头和结尾。
答案 3 :(得分:0)
#This program is to validate the regular expression for this scenerio.
#Any properly formattes number (w/Commas) will match.
#Parsing through a document for this regex is beyond my capability at this time.
print('Type a number with commas')
sentence = input()
import re
pattern = re.compile(r'\d{1,3}(,\d{3})*')
matches = pattern.match(sentence)
if matches.group(0) != sentence:
#Checks to see if the input value
#does NOT match the pattern.
print ('Does Not Match the Regular Expression!')
else:
print(matches.group(0)+ ' matches the pattern.')
#If the values match it will state verification.
答案 4 :(得分:0)
简单的答案是:
^\d{1,2}(,\d{3})*$
^\d{1,2} - should start with a number and matches 1 or 2 digits.
(,\d{3})*$ - once ',' is passed it requires 3 digits.
适用于本书中的所有场景。 在 https://pythex.org/
上测试您的场景