Python 正则表达式与包含特定数字的表达式不匹配
我想匹配这样的正则表达式Python 正则表达式与包含特定数字的表达式不匹配,python,python-3.x,regex,Python,Python 3.x,Regex,我想匹配这样的正则表达式 ] prima 1 words 2 words 如果它是 ] prima 1 words 2 words 3 words 我的审判是这样的: \]\s*prima\s*1([\w\s]+)\s2([\w\s][^3]+) 但它只匹配了我根本不想匹配的表达式的一部分。我错了。怎么做?我需要将其插入re.compile中,因此它必须是一行。此模式将匹配示例数据,但请注意,\w本身也可以匹配数字 如果要匹配1个或多个空格字符(也可以匹配换行符),可以使用\s+而不是空格
] prima 1 words 2 words
如果它是
] prima 1 words 2 words 3 words
我的审判是这样的:
\]\s*prima\s*1([\w\s]+)\s2([\w\s][^3]+)
但它只匹配了我根本不想匹配的表达式的一部分。我错了。怎么做?我需要将其插入
re.compile
中,因此它必须是一行。此模式将匹配示例数据,但请注意,\w
本身也可以匹配数字
如果要匹配1个或多个空格字符(也可以匹配换行符),可以使用\s+
而不是空格
^\] prima 1 \w+ 2 \w+$
如果要匹配]prima
后接1和2,这两个词本身可以后跟1个或多个不能以数字开头的单词:
^] prima 1 [^\W\d]\w*(?: [^\W\d]\w*)* 2 [^\W\d]\w*(?: [^\W\d]\w*)*$
字符串的开头^
逐字匹配]prima 1
匹配字符不以数字开头的单词[^\W\d]\W*
匹配空格和不以数字开头的单词,重复0多次(?:[^\W\d]\W*)*
逐字匹配2
匹配字符不以数字开头的单词[^\W\d]\W*
匹配空格和不以数字开头的单词,重复0多次(?:[^\W\d]\W*)*
字符串结尾$
(?!\d+\b)
仅检查数字
^\] prima 1 (?!\d+\b)\w+(?: (?!\d+\b)\w+)* 2 (?!\d+\b)\w+(?: (?!\d+\b)\w+)*$
你想匹配单词,但不想在单词前面加空格和3时匹配?如果有3,空格和其他单词!它不像“3hello”,而是按顺序“3hello”,可能像
^\](?:(?!3\b)\d+\w+$
或更广泛的版本^\](?:(?!3\b)\w+$
我想精确匹配“]prima 1个单词2个单词”,如果我插入你的表达式,它也会匹配4个单词5个单词。“words”是指单词,如果你想精确地匹配它的话,^\]prima 1\w+2\w+$
嘿,这很好,它在regex101上匹配,但是如果我把它放在re.compile中,它就不起作用了。为什么@Anna您是否使用了re.MULTILINE
likeregex=re.compile(pattern,re.MULTILINE)
查看我正在检查的这个示例,它匹配了6/19个实例:\]\s*prima\s*1\s*(?!\d+\b)\w+(?:\s(?!\d+\b)\w+\s*2\s(?!\d+\b)\w+(?:(?:(?!\d+\b)\w+\w*)
不,仅此项:查找FASE123T\s*u=prima\s*(\s*)\w+(?:\s(?!\d+\b)\w+*\s*2\s(?!\d+\b)\w+(?:(?!\d+\b)\w+*$)
我正在进行一些试验,因为它仍然需要19个中的9个,我必须看看有什么不匹配