Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.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_String_Verification - Fatal编程技术网

Python 出现特定数字和单词时正则表达式匹配

Python 出现特定数字和单词时正则表达式匹配,python,regex,string,verification,Python,Regex,String,Verification,我对regex很陌生,正在进行字符串验证,我希望这两个条件都能满足。我正在匹配包含以4或7+字符串开头的7位数字的文本,需要包含提供的单词之一 到目前为止我所做的: \b((4|7)\d{6})\b|(\border|Order|Bestellung|bestellung|commande|Commande|ordine|Ordine|objednavku|Objednavku|objednavka|Objednavka) 上面的正则表达式可以正确地查找数字,但单词位于或语句之后,我需要遵循这

我对regex很陌生,正在进行字符串验证,我希望这两个条件都能满足。我正在匹配包含以4或7+字符串开头的7位数字的文本,需要包含提供的单词之一

到目前为止我所做的:

\b((4|7)\d{6})\b|(\border|Order|Bestellung|bestellung|commande|Commande|ordine|Ordine|objednavku|Objednavku|objednavka|Objednavka)
上面的正则表达式可以正确地查找数字,但单词位于或语句之后,我需要遵循这些语句和逻辑


您能帮我实现一个在数字和单词之间充当AND语句的更改吗?

默认情况下,正则表达式中的所有内容都是AND 如果你这样做 美国广播公司, 它的意思是“a”、“b”和“c” 因此,在正则表达式中不需要AND

只需删除数字匹配和单词之间的|

\b(4|7)\d{6}(border|Order|Bestellung|bestellung|commande|Commande|ordine|Ordine|objednavku|Objednavku|objednavka|Objednavka)\b
我认为第一个单词\ border的反斜杠是个错误。 这可以匹配您可以使用的“4958374border”之类的内容

(?s)^(?=.*\b(?:order | order | Bestellung | Bestellung | commande | ordine | ordine | ordine | objednavku | objednavka | objednavka)\b.*\b([47]\d{6})
如果您可以并且希望使用与
re.I
不区分大小写的匹配,则可以使用

(?si)^(?=.*\b(?:order | bestellung | commande | ordine | objednavk[ua])\b.*\b([47]\d{6})\b

这和

  • ^
    -字符串的开头
  • (?=.*\b(?:order | order | Bestellung | Bestellung | commande | ordine | ordine | ordine | order | Bestellung | ordine | ordine | ordine | ordine | objednavku objednavka | objednavka | objednavka | objednavka)\b)
    -一种积极的前瞻,它可以匹配任何零
  • *
    -零个或多个字符,尽可能多
  • \b([47]\d{6})\b
    -一个以
    4
    7
    开头的7位数字,作为一个完整的单词
不要忘记使用原始字符串文字在Python代码中定义正则表达式:

pattern=r'(?si)^(?=.*\b(?:order | bestellung | command | ordine | ordine | objednavk[ua])\b.*\b([47]\d{6})\b'

之前尝试删除
(\border…
类似的东西?@SeaBean已经尝试删除,但它与任何东西都不匹配。WiktorStribiżew-非常感谢,先生,这确实有效!
^[47]\d{6}(?[Oo]order |[Bb]estellung[Cc]ommande |[Oo rdine]bjednavku[Oo]bjednavka)
@VishalSingh感谢您的大写/小写实现!感谢您对代码和实现的解释。虽然提供的代码不匹配,但没关系,对我有效的是@wiktorth发布的内容。这是一个错误的模式,因为它与您需要的不匹配,它与粘贴在gr中的单词上的7位数字匹配oup,而不是
顺序
,现在,此模式需要
边框
。您好,Wiktor,经过适当的测试,您上面的正则表达式是最终的工作解决方案。非常感谢您的详细说明。祝您愉快。