我可能会问重复的问题,但我不能找到解决我的问题,请饶了! 我需要捕获正则表达式通过用引号括起来的短语。这很容易,但是当没有像在以下情况下 'सीक्रेट सुपरस्टार'
和‘ डॉन 2 ’
我使用re.findall(r"['(.*?)' |‘(.*?)’] ",text)
试图引号的均匀性就会出现问题。但是这并不成功。 我需要一个正则表达式来找到包含在不同类型的引号的短语。捕捉引号的短语,虽然正则表达式
1
A
回答
1
您可以使用
(?:(')|(‘))(.*?)(?(1)'|(?(2)’))
详细
(?:(')|(‘))
- 匹配并捕获'
(把它放入第1组)或匹配并捕获‘
(并将其放入组2)(.*?)
- 匹配以外的任何字符0+比行断字,尽可能少(?(1)'
- 如果第1组匹配,匹配'
|
- 否则(?(2)’
- 如果第2组相匹配,匹配’
))
- 条件结构的结束。
见下面的Python 2.7 demo:
rx = ur'''(?:(')|(‘))(.*?)(?(1)'|(?(2)’))'''
s=u"'सीक्रेट सुपरस्टार' and ‘ डॉन 2 ’"
for x in re.finditer(rx, s):
print(x.group(3).encode("utf8"))
输出:
सीक्रेट सुपरस्टार
डॉन 2
+1
感谢您的回答。但我需要添加更多的条件来检查像包围在“सुपरस्टार”或一些其他类型的引号的文本短语。有了上述解决方案,我只能捕获2个条件。有没有办法包含多个条件? –
+0
是的,只需在第一个“(?:...)”组中添加更多的捕获组作为替代方案,在结尾添加更多的条件结构检查。你也可以尝试另一种匹配字符串的方式,比如'['''](。*?)[''']'。看[这个Python演示](https://ideone.com/GKXCjL)。甚至['[ ' “]([^'”'] *)[“']'](https://ideone.com/Y6Dazl)检查这些正则表达式[** **这里(HTTPS: //regex101.com/r/5D4SpO/1)。 –
相关问题
- 1. 正则表达式 - 捕捉大括号
- 2. 正则表达式和捕捉括号
- 3. 无法捕捉单引号中的正则表达式
- 4. 正则表达式来捕捉引号之间串
- 5. 我的正则表达式仍然捕捉非捕获组
- 6. 正则表达式不捕捉JMeter的
- 7. 的Javascript正则表达式捕捉
- 8. 捕捉与Postgres的正则表达式
- 9. 正则表达式捕获美元数额捕捉@符号太
- 10. 正则表达式捕捉串,多行
- 11. 正则表达式捕捉重复组
- 12. 正则表达式组捕捉问题
- 13. 正则表达式捕捉这部分
- 14. 正则表达式只捕捉组
- 15. 动态正则表达式来捕捉
- 16. 正则表达式.NET多行捕捉
- 17. AWK捕捉正则表达式
- 18. 正则表达式 - 捕捉多次
- 19. 捕捉与正则表达式
- 20. 用正确的短语捕获句子的正则表达式
- 21. 正则表达式不能捕捉IE中的引用
- 22. 正则表达式捕捉到逗号分隔值
- 23. 正则表达式来捕捉一个版本号
- 24. 捕捉编号 - 正则表达式 - 在记事本++
- 25. 正则表达式:引号中引号
- 26. 正则表达式:捕获连字符中的所有短语
- 27. 单引号,双引号和正则表达式的Javascript正则表达式
- 28. 缩短航班号正则表达式
- 29. 正则表达式与短语聚合
- 30. 正则表达式结束行短语
删除空白和'['和']'。 –
这个答案可以帮助你https://stackoverflow.com/a/9523932/5513005 –