content = 'abcdd'
import re,os,sys
def test():
print content
list = re.findall(r'[.\n]+',content)
print list
if __name__ == '__main__':
test()
我知道'。'代表除'\ n'
之外的任何字符所以[。\ n]应代表任何字符
但结果是[]
为什么
你可以帮帮我吗?谢谢avdanvce!
答案 0 :(得分:6)
.
内的 []
失去了“所有字符的特殊含义(除了换行符号或取决于标志)”并且只是一个简单的句号.
。
因此[.\n]
仅匹配句号.
或新行字符。
如果你想匹配任何一个字符(无例外),一个技巧是形成一个补充字符类的字符类,例如: [\s\S]
。当语言的正则表达式不支持DOTALL选项时,这很有用,这使得.
匹配任何字符。
但是,因为Python支持DOTALL选项(re.DOTALL
),所以你可以使用它。
请注意,对于Python,.
仅排除\n
。对于其他语言,它可能会排除更多:Javascript。
答案 1 :(得分:1)
获得一切:
content = 'abcdd'
import re,os,sys
def test():
print content
list = re.findall(r'.+', content, re.DOTALL)
print list
if __name__ == '__main__':
test()
结果:
>>>
abcdd
['abcdd']
你需要使用DOTALL(这意味着.
也意味着\n
)
答案 2 :(得分:0)
特殊角色在内部失去特殊意义。对于 例如,[(+ *)]将匹配任何文字字符'(','+', '*'或')'。
请尝试使用'.|\n'
,或者按照之前的说明使用re.DOTALL。