我试图使用正则表达式匹配以下示例中的属性名称("SUP“、"QUANTITY”、"MOD/REF"):
SUP : K16518-1,数量:2件// MOD/REF: 16-1P1-0612
注意:
我试图使用以下正则表达式来完成此操作:
(?<=\s)[a-zA-Z\s/]+:我使用的(?<=\s)负面外观,因为在属性名称之前总是有一个“空格”。
如果不是双字符//字符,它就能工作,这当然与字符集中的'/‘字符匹配。是否有一种方法可以在字符集中只包含单个“/”字符,而不包括“//”双字符?(也许还有一种更优雅的方法来解决这个问题?)
编辑:注意,属性也可能包含两个以上的单词。此外,所选的属性名称只是示例,它也适用于不同的名称。
发布于 2018-12-21 00:28:53
您可以使用这个regex:
\s([a-zA-Z]+(?:[/\s][a-zA-Z]+)*):它查找前面是空格的单词,后面是分隔符的可选组(空格或/),另一个单词后面是:。对于您的数据组1是SUP NR、QUANTITY和MOD/REF。
对于python,您可以这样使用这个regex:
import re
string = " SUP NR: K16518-1, QUANTITY: 2 PIECES// MOD/REF: 16-1P1-0612"
regex = re.compile('\s([a-zA-Z]+(?:[/\s][a-zA-Z]+)*):')
print regex.findall(string)输出:
['SUP NR', 'QUANTITY', 'MOD/REF']发布于 2018-12-21 00:38:58
你不需要看后面的东西。你也可以说得更具体些。
试试这个:
[a-zA-Z]+([ /][a-zA-Z]+)*(?=:)见现场演示。
顺便说一句,你后面的表情不是消极的,而是正面的--消极的看后面使用语法(?<!...)
https://stackoverflow.com/questions/53877690
复制相似问题