如何匹配使用RE格式的单词:字母数、字母数字点(.)字母数字{0-4}
示例:
A24.L
A2F.L9
A2F.LG4这就是我到目前为止想出的:
answer=re.findall(r'[A-Za-z]\d\w\.\w{0-4})发布于 2022-10-04 07:43:23
当您使用re.findall时,我假设您在较长的文本中寻找部分匹配。考虑到这一点,您需要修复以下内容:
\w不仅匹配字母数字,而且还匹配_字符。{0-4}不是一个有效的限制(“范围”或“间隔”)量词,它有一个{min,max}语法(请注意,不应该省略min值,虽然有些正则表达式引擎允许将0值用作默认值,但是有些正则表达式引擎要么不支持,要么在省略时不能正确工作)。\d匹配任何Unicode数字(如٠١٢٣٤٥٦٧٨٩۰۱۲۳۴۵۶۷۸۹߀߁߂߃߄߅߆߇߈߉०१२३४५६७८९০১২৩৪৫৬৭৮৯੦੧੨੩੪੫੬੭੮੯૦૧૨૩૪૫૬૭૮૯୦୧୨୩୪୫୬୭୮୯௦௧௨௩௪௫௬௭௮௯౦౧౨౩౪౫౬౭౮౯೦೧೨೩೪೫೬೭೮೯൦൧൨൩൪൫൬൭൮൯๐๑๒๓๔๕๖๗๘๙໐໑໒໓໔໕໖໗໘໙༠༡༢༣༤༥༦༧༨༩၀၁၂၃၄၅၆၇၈၉႐႑႒႓႔႕႖႗႘႙០១២៣៤៥៦៧៨៩᠐᠑᠒᠓᠔᠕᠖᠗᠘᠙᥆᥇᥈᥉᥊᥋᥌᥍᥎᥏᧐᧑᧒᧓᧔᧕᧖᧗᧘᧙᭐᭑᭒᭓᭔᭕᭖᭗᭘᭙᮰᮱᮲᮳᮴᮵᮶᮷᮸᮹᱀᱁᱂᱃᱄᱅᱆᱇᱈᱉᱐᱑᱒᱓᱔᱕᱖᱗᱘᱙꘠꘡꘢꘣꘤꘥꘦꘧꘨꘩꣐꣑꣒꣓꣔꣕꣖꣗꣘꣙꤀꤁꤂꤃꤄꤅꤆꤇꤈꤉꩐꩑꩒꩓꩔꩕꩖꩗꩘꩙0123456789),因此您可能希望使用(?a)内联修饰符(只匹配ASCII数字)或显式[0-9]。所以,你可以用
answer=re.findall(r'\b[A-Za-z][0-9][A-Za-z0-9]\.[A-Za-z0-9]{1,4}\b', text)如果.后的字母数字是必需的,如果匹配可以以点结尾,则如下所示:
answer=re.findall(r'\b[A-Za-z][0-9][A-Za-z0-9]\.[A-Za-z0-9]{0,4}(?<!\w\B)', text)详细信息
\b -字边界[A-Za-z]一封信[0-9] - ASCII数字[A-Za-z0-9] - ASCII字母数字\. -a . char[A-Za-z0-9]{1,4}\b -在单词边界处有一个到四个字母数字字符。第二个正则表达式在末尾不包含一个单词边界,因为匹配应该能够以一个.结束(而不是一个单词char)。(?<!\w\B)是一个右动态词边界,如果前面的字符是一个单词字符,则只需要一个非字字符或结束位置。
见regex演示。
https://stackoverflow.com/questions/73943156
复制相似问题