Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python使用正则表达式匹配破折号_Python_Regex - Fatal编程技术网

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+