我正在尝试使用正则表达式来仅选择引号内的单词组。
示例
输入:
this is 'a sentence' with less 'than twenty words'
输出:
['a sentence', 'than twenty words']
我正在使用的正则表达式是:
'\'[\w]+[ ]+[[\w]+[ ]+]*[\w]+\''
但它只是回归'超过二十个字'。实际上,它只返回带有两个空格的字符串。
答案 0 :(得分:3)
答案 1 :(得分:1)
试试这段代码
import re
st = "this is 'a sentence' with less 'than twenty words'"
re.findall(r"\'([\w|\s]+)\'", st)
答案 2 :(得分:0)
import re
sentence = "this is 'a sentence' with less 'than twenty words' and a 'lonely' word"
regex = re.compile(r"(?<=')\w+(?:\s+\w+)+(?=')")
regex.findall(sentence)
# ['a sentence', 'than twenty words']
我们希望捕获以引号开头和结尾的字符串,而不捕获它们,因此我们之前使用正向lookbehind断言(?<=')
,之后使用先行断言(?=')
。
在引号内,我们希望至少有一个单词,后跟至少一组空格和单词。我们不希望它成为捕获组,否则findall
将仅返回此组,因此我们使用(?:....)
使其无法捕获。
答案 3 :(得分:0)
迟到的答案,但您可以使用:
import re
string = "this is 'a sentence' with less 'than twenty words'"
result = re.findall("'(.*?)'", string)
print result
# ['a sentence', 'than twenty words']