任何人都可以解释为什么这个(在Python中):
pattern = re.compile(r"""
^
([[a-zA-Zàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ]+\s{1}]+)
([a-zA-Zàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ]+) # Last word.
\.{1}
$
""", re.VERBOSE + re.UNICODE)
if re.match(pattern, line):
与“一句话”不符。
我实际上希望将整个句子(包括句点)作为返回的组()返回,但一直失败。
答案 0 :(得分:0)
我想也许你打算这样做:
(([a-zA-Zàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ]+\s{1})+)
^ ^
我不认为嵌套的方括号你做了你认为他们做的事。
答案 1 :(得分:0)
这个正则表达式有效:
pattern = re.compile(r"""
^
([a-zA-Zàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ]+\s{1})+
([a-zA-Zàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ]+) # Last word.
\.{1}
$
""", re.VERBOSE + re.UNICODE)
line = "A sentence."
match = re.match(pattern, line)
>>> print "'%s'" % match.group(0)
'A sentence.'
>>> print "'%s'" % match.group(1)
'A '
>>> print "'%s'" % match.group(2)
'sentence'
要返回整个匹配项(在这种情况下为line
),请使用match.group(0)
。
由于第一个匹配组可以多次匹配(每个字除了最后一个匹配一次),因此您只能使用match.group(1)
访问倒数第二个字。
顺便说一下,在这种情况下不需要{1}
表示法,匹配一次且只有一次是默认行为,因此可以删除此位。
额外的一组方括号肯定没有帮助你:)。
答案 2 :(得分:0)
事实证明以下内容确实有效并包含了我想要的所有扩展的ascii字符
^
([\w+\s{1}]+\w{1}\.{1})
$