Python正则表达式不能使用特殊字符

时间:2018-08-07 22:37:04

标签: python

已解决:它将文件中的“”符号替换为“(在数据字符串中)”

您知道一种仅搜索 [“ \ n 之间的一个或多个单词(不是数字)的方法吗?

这在regexr.com上有效,但在python中无效

https://regexr.com/3tju7

¨

(?<=\[\")(\D+)(?=\\n)

“ S”:[“某物\ n13 / 8-2018 09:00至11:30

¨

Python代码:

re.search('(?<= [\“)(\ D +)(?= \ n)',str(数据))

我认为是\[\"\\n的问题,我尝试在python中使用raw

re.search('(?<=\[\")(\D+)(?=\\n)', '"S": ["Something\n13/8-201809:00 to 11:30').group()

这可行,但是我必须使用“ 数据”,因为我有多个字符串,并且不允许我在其上使用 .group()

错误: AttributeError:'NoneType'对象没有属性'group'

2 个答案:

答案 0 :(得分:3)

您的问题是\n被解释为换行符,而不是原义字符\n。您可以使用更简单的正则表达式\["([\w\s]+)$MULTILINE标志,而无需修改数据。

>>> import re
>>> data = '"S": ["Something\n13/8-201809:00 to 11:30'
>>> pattern = '\["([\w\s]+)$'
>>> m = re.search(pattern, data, re.MULTILINE)
>>> m.group(1)
'Something'

答案 1 :(得分:1)

尝试在带有模式的字符串前放置r,以将字符串标记为“原始”。这将阻止python在将转义的字符传递给函数之前评估转义的字符

re.search(r'\search', string)

或者:

rgx = re.compile(r'pattern')
rgx.search(string)