Python正则表达式查找包含模式点号点的文本

时间:2018-07-26 21:21:02

标签: regex python-3.x

我希望在一个大文件中找到符合以下基本条件的模式:“ 1.2”(即数字点号)

在以下情况下,它也应该返回true:“ 1.2.2”或“ 1.2.a”或“ texttext1.2.3text文本”或“ text2.3textext”

我在导入python3模块的re程序中编写了以下查询:

re.compile(r"^\d*[.]?\d*$")

但是,问题在于,对于诸如“ 112231”之类的数字,它也返回true。

如何修复我的正则表达式?

1 个答案:

答案 0 :(得分:2)

您要匹配一个数字,后跟一个点,然后再匹配另一个数字。

使用

r"\d\.\d"

请参见regex demo

在Python中,要检查字符串是否与模式匹配,请使用

m = re.search(r"\d\.\d", s)
if m:
    print("Matched!")

关于Unicode的注释:Python 3.x正则表达式中的\d也将匹配所有Unicode数字,例如那些(示例):

0٠۰߀०০੦૦୦௦౦೦൦๐໐༠០᠐᧐᱐꘠01١۱߁१১੧૧୧௧౧೧൧๑໑༡១᠑᧑᱑꘡12٢۲߂२২੨૨୨௨౨೨൨๒໒༢២᠒᧒᱒꘢23٣۳߃३৩੩૩୩௩౩೩൩෩๓໓༣៣᠓᧓᱓꘣34٤۴߄४৪੪૪୪௪౪೪൪๔໔༤៤᠔᧔᱔꘤45٥۵߅५৫੫૫୫௫౫೫൫෫๕໕༥៥᠕᧕᱕꘥56٦۶߆६৬੬૬୬௬౬೬൬๖໖༦៦᠖᧖᱖꘦67٧۷߇७৭੭૭୭௭౭೭൭෭๗໗༧៧᠗᧗᱗꘧78٨۸߈८৮੮૮୮௮౮೮൮๘໘༨៨᠘᧘᱘꘨89٩۹߉९৯੯૯୯௯౯೯൯෯๙໙༩៩᠙᧙᱙꘩9

为避免这种情况,请将re.A or re.ASCII flag传递给re.searchre.compile方法。或者,使用[0-9]代替\d