如何忽略python中正则表达式中的\ n?

时间:2014-04-17 20:46:30

标签: python

所以我有一个正则表达式告诉数字是否为整数。

regex = '^(0|[1-9][0-9]*)$'

import re
bool(re.search(regex, '42\n'))

返回True,它不应该? 问题出在哪里?

4 个答案:

答案 0 :(得分:2)

来自documentation

  

'$'

     

匹配字符串的结尾或在字符串末尾的换行符之前

请尝试\Z

此外,每当您发现自己编写以^\A开头并以$\Z结尾的正则表达式时,如果您的意图仅匹配在整个字符串中,您应该使用re.match而不是re.search(并省略正则表达式中的边界标记)。

答案 1 :(得分:1)

是的,在结束前匹配一个\ n的$是一种陷阱/不一致。查看我的python正则表达式陷阱列表:http://www.cofoh.com/advanced-regex-tutorial-python/traps

答案 2 :(得分:0)

正则表达式应为regex = '\b^(0|[1-9][0-9]*)$\b'

答案 3 :(得分:0)

问题中的正则表达式匹配 - >行的起点,数字和行尾。给定的字符串匹配,这就是为什么它返回true。如果你想让它在存在数字时返回False,你可以使用“!”表示不。

参考https://docs.python.org/2/library/re.html

regex = '!(0|[1-9][0-9]*)$'
bool(re.search(regex, '42\n')) => (Returns false)