作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果它们是一两个单词长,我想提取引号中的单词。这适用于以下代码。
mysentences = ['Kids, you "tried" your "best" and you failed miserably. The "lesson" is, "never try."',
"Just because I don’t 'care' doesn’t mean I don’t understand."]
quotation = []
rx = r'"((?:\w+[ .]*){1,2})"'
for sentence in mysentences:
quotation.append(re.findall(rx, sentence))
print(quotation)
但这并没有让我从第二句中得到“关心”,因为第二句用双引号引起来。我可以通过以下方式获得它
r"'((?:\w+[ .]*){1,2})'"
问题是,怎样才能加入条件呢?与
rx = r'"((?:\w+[ .]*){1,2})"' or r"'((?:\w+[ .]*){1,2})'"
它只会让我得到第一个提到的条件。
最佳答案
使用您当前的模式,您可以使用 capturing group和反向引用 \1
以匹配随附的单引号或双引号。
比赛现在将进入第二个捕获组。
(['"])((?:\w+[ .]*){1,2})\1
请注意,重复字符类 [ .]*
也可能匹配例如 never try... ....
如果你想匹配 1 或 2 个单词,最后可以有一个可选的点,你可以匹配 1+ 个单词字符后跟一个可选组来匹配 1+ 个空格和 1+ 个单词字符后跟一个可选的点。
(['"])(\w+(?: +\w+)?\.?)\1
例如
import re
mysentences = ['Kids, you "tried" your "best" and you failed miserably. The "lesson" is, "never try."',
"Just because I don’t 'care' doesn’t mean I don’t understand."]
quotation = []
rx = r"(['\"])((?:\w+[ .]*){1,2})\1"
for sentence in mysentences:
for m in re.findall(rx, sentence):
quotation.append(m[1])
print(quotation)
结果
['tried', 'best', 'lesson', 'never try.', 'care']
关于python - 如何用正则表达式同时搜索两个可能的引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57338624/
我是一名优秀的程序员,十分优秀!