gpt4 book ai didi

python - 查找字符串的哪一部分与正则表达式python不匹配

转载 作者:行者123 更新时间:2023-11-28 18:38:48 25 4
gpt4 key购买 nike

为了查看文件名是否正确命名(使用 re),我使用以下正则表达式模式:

*^S_hc_[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{1,2}_[0-9]{4,4}-[0-9]{1,3}T[0-9]{6,6}\.xml$"*

这是一个正确的文件名:*S_hc_1.2.3_2014-213T123121.xml*

这是一个不正确的文件名:*S_hc_1.2.IncorrectName_2014-213T123121.xml*

我想知道是否有一种简单的方法来检索文件中不匹配的部分。

最后,会显示一条错误信息:

Error, incorrect file name, the part 'IncorrectName' does not match with expected name. 

最佳答案

您可以在 next 中使用 re.split 和生成器表达式但您还需要检查与您想要的匹配的字符串结构,您可以使用以下 re.match 来完成:

re.match(r"^S_hc_(.*)\.(.*)\.(.*)_(.*)-(.*)\.xml$",s2)

在代码中:

>>> import re
>>> s2 ='S_hc_1.2.IncorrectName_2014-213T123121.xml'
>>> s1
'S_hc_1.2.3_2014-213T123121.xml'
#with s1
>>> next((i for i in re.split(r'^S_hc_|[0-9]{1,2}\.|[0-9]{1,2}_|_|[0-9]{4,4}|-|[0-9]{1,3}T[0-9]{6}|\.|xml$',s1) if i and re.match(r"^S_hc_(.*)\.(.*)\.(.*)_(.*)-(.*)\.xml$",s2)),None)
#with s2
>>> next((i for i in re.split(r'^S_hc_|[0-9]{1,2}\.|[0-9]{1,2}_|_|[0-9]{4,4}|-|[0-9]{1,3}T[0-9]{6}|\.|xml$',s2) if i and re.match(r"^S_hc_(.*)\.(.*)\.(.*)_(.*)-(.*)\.xml$",s2)),None)
'IncorrectName'

您只需在正则表达式模式的独特部分之间使用 pip (|),然后 split 函数将根据其中一种模式拆分您的字符串。

并且与您的模式之一不匹配的部分将不会被拆分,您可以通过循环遍历拆分文本来找到它!

next(iterator[, default])

Retrieve the next item from the iterator by calling its next() method. If default is given, it is returned if the iterator is exhausted, otherwise StopIteration is raised.

如果你想要多行:

>>> for i in re.split(r'^S_hc_|[0-9]{1,2}\.|[0-9]{1,2}_|_|[0-9]{4,4}|-|[0-9]{1,3}T[0-9]{6}|\.|xml$',s2):
... if i and re.match(r"^S_hc_(.*)\.(.*)\.(.*)_(.*)-(.*)\.xml$",s2):
... print i
...
IncorrectName

关于python - 查找字符串的哪一部分与正则表达式python不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29653350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com