首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于复杂形式稀土匹配的问题

关于复杂形式稀土匹配的问题
EN

Stack Overflow用户
提问于 2022-10-04 04:32:34
回答 1查看 93关注 0票数 0

如何匹配使用RE格式的单词:字母数、字母数字点(.)字母数字{0-4}

示例:

代码语言:javascript
复制
A24.L
A2F.L9
A2F.LG4

这就是我到目前为止想出的:

代码语言:javascript
复制
answer=re.findall(r'[A-Za-z]\d\w\.\w{0-4})
EN

回答 1

Stack Overflow用户

发布于 2022-10-04 07:43:23

当您使用re.findall时,我假设您在较长的文本中寻找部分匹配。考虑到这一点,您需要修复以下内容:

  • \w不仅匹配字母数字,而且还匹配_字符。
  • {0-4}不是一个有效的限制(“范围”或“间隔”)量词,它有一个{min,max}语法(请注意,不应该省略min值,虽然有些正则表达式引擎允许将0值用作默认值,但是有些正则表达式引擎要么不支持,要么在省略时不能正确工作)。
  • 在Python3中,\d匹配任何Unicode数字(如٠١٢٣٤٥٦٧٨٩۰۱۲۳۴۵۶۷۸۹߀߁߂߃߄߅߆߇߈߉०१२३४५६७८९০১২৩৪৫৬৭৮৯੦੧੨੩੪੫੬੭੮੯૦૧૨૩૪૫૬૭૮૯୦୧୨୩୪୫୬୭୮୯௦௧௨௩௪௫௬௭௮௯౦౧౨౩౪౫౬౭౮౯೦೧೨೩೪೫೬೭೮೯൦൧൨൩൪൫൬൭൮൯๐๑๒๓๔๕๖๗๘๙໐໑໒໓໔໕໖໗໘໙༠༡༢༣༤༥༦༧༨༩၀၁၂၃၄၅၆၇၈၉႐႑႒႓႔႕႖႗႘႙០១២៣៤៥៦៧៨៩᠐᠑᠒᠓᠔᠕᠖᠗᠘᠙᥆᥇᥈᥉᥊᥋᥌᥍᥎᥏᧐᧑᧒᧓᧔᧕᧖᧗᧘᧙᭐᭑᭒᭓᭔᭕᭖᭗᭘᭙᮰᮱᮲᮳᮴᮵᮶᮷᮸᮹᱀᱁᱂᱃᱄᱅᱆᱇᱈᱉᱐᱑᱒᱓᱔᱕᱖᱗᱘᱙꘠꘡꘢꘣꘤꘥꘦꘧꘨꘩꣐꣑꣒꣓꣔꣕꣖꣗꣘꣙꤀꤁꤂꤃꤄꤅꤆꤇꤈꤉꩐꩑꩒꩓꩔꩕꩖꩗꩘꩙0123456789),因此您可能希望使用(?a)内联修饰符(只匹配ASCII数字)或显式[0-9]

所以,你可以用

代码语言:javascript
复制
answer=re.findall(r'\b[A-Za-z][0-9][A-Za-z0-9]\.[A-Za-z0-9]{1,4}\b', text)

如果.后的字母数字是必需的,如果匹配可以以点结尾,则如下所示:

代码语言:javascript
复制
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演示

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73943156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档