Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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,我有这样的清单(只是其中的一部分) 我需要找到一般规则来匹配它们,但不是第一行(简单的单词)或\d或\w中的任何一行(如果没有相互混合和斜杠)。允许使用像\d{8}这样的数字 我不知道如何在这3组中的每一组中使用类似于“必须”的语句——这两个都不能错过 这些模式要么不完全匹配,要么与单词匹配。如果可能,需要尽可能简单的正则表达式 \d{8}|(\w++/++\d+ \d{8}|[\w/\d]+ 编辑 这很有趣,但一些未提供的示例与建议的表达式不匹配。例如: 7/2018/4127 NWB/18

我有这样的清单(只是其中的一部分)

我需要找到一般规则来匹配它们,但不是第一行(简单的单词)或
\d
\w
中的任何一行(如果没有相互混合和斜杠)。允许使用像
\d{8}
这样的数字

我不知道如何在这3组中的每一组中使用类似于“必须”的语句——这两个都不能错过

这些模式要么不完全匹配,要么与单词匹配。如果可能,需要尽可能简单的正则表达式

\d{8}|(\w++/++\d+
\d{8}|[\w/\d]+

编辑

这很有趣,但一些未提供的示例与建议的表达式不匹配。例如:

7/2018/4127 
NWB/18CM032

但我知道原因,这超出了范围。然而,在一个组中添加混合数字和字母的功能,如
NWB/18CM032
,将是非常好的,我认为不会打破之前的想法

您可以将大写字符或1-8位匹配1次或多次,并使用前斜杠重复0次或多次:

^(?:[a-z0-9]+(?:/[a-z0-9]+)+|\d{8})$
那会匹配的

  • ^
    字符串的开头
  • (?:
    非捕获组
    • [a-z0-9]+
      将字符a-z或数字匹配1+次
    • (?:/[a-z0-9]+)+
      匹配一个
      /
      ,后跟一个字符或数字1+次,并重复1+次
    • |
    • \d{8}
      匹配8位数字
  • 关闭组
  • $
    字符串结尾

你是说像这样吗<代码>^(?[A-Z]+|\d{1,8})(?:/(?:[A-Z]+|\d{1,8}))*$这对这个想法很有效。谢谢然而,这是一个问题。我说它不能匹配单个单词,比如
word
。这将至少匹配带正斜杠的结构,还将匹配混合数字和字母,并且使用不区分大小写的标志。第一个与
WDC/18CM005
不匹配,所以第二个将是最终答案(正如刚才在所有长列表中检查的那样)。谢谢太好了,最后一个有效!我已相应地更新了我的答案。
^(?:[a-z0-9]+(?:/[a-z0-9]+)+|\d{8})$