Python使用正则表达式匹配破折号
我目前还不熟悉正则表达式,如果有人能指导我,我将不胜感激Python使用正则表达式匹配破折号,python,regex,Python,Regex,我目前还不熟悉正则表达式,如果有人能指导我,我将不胜感激 import re some = "I cannot take this B01234-56-K-9870 to the house of cards" 我有上面的字符串,并尝试使用python正则表达式提取带破折号的字符串(B01234-56-K-9870)。到目前为止,我有以下代码: regex = r'\w+-\w+-\w+-\w+' match = re.search(regex, some) print(m
import re
some = "I cannot take this B01234-56-K-9870 to the house of cards"
我有上面的字符串,并尝试使用python正则表达式提取带破折号的字符串(B01234-56-K-9870)。到目前为止,我有以下代码:
regex = r'\w+-\w+-\w+-\w+'
match = re.search(regex, some)
print(match.group()) #returns B01234-56-K-9870
有没有更简单的方法可以使用正则表达式提取破折号模式?现在,我不关心订单或任何事情。我只是想用破折号来提取字符串。试试下面的正则表达式(缩写为)
原始正则表达式:(?=\w+-)\S+
说明:
匹配一个或多个单词,后跟一个\w+-
-
匹配非空格字符\S+
\w+(?:-\w+)
就可以了。如果您希望正好有3个破折号,那么\w+(?:-\w+{3}
看起来您的数据是特定格式的。在正则表达式中正确地表达这一点是可以的。正则表达式没有什么特别的错误。只需知道\w
也与\u
匹配即可。就我个人而言,如果最后一组总是数字,前三组都是大写和数字,我会找出是否有一个更容易识别的模式并使用它,例如(?:[a-Z\d]+-){3}\d+
。谢谢您的解释。如果我只想捕捉3个破折号,我将如何实现呢?然后,使用\w+(?:-\w+{3}
,正如感谢@Tomerikoo指出的;-)你不需要向前看,你可以匹配它。@Thefourthbird-很好,你是对的!!
\w+-\S+