0

任何人都可以解释为什么这是(在 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):

不匹配“一个句子”。

我实际上想将整个句子(包括句号)作为返回组()返回,但一直失败得很惨。

4

3 回答 3

0

我认为也许您打算这样做:

(([a-zA-Zàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ]+\s{1})+)
 ^                                             ^

我认为您拥有的嵌套方括号不会像您认为的那样做。

于 2013-01-25T00:48:21.050 回答
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}在这种情况下,符号不是必需的,匹配一次且仅一次是默认行为,因此可以删除该位。

额外的方括号绝对没有帮助你:)

于 2013-01-25T11:35:59.367 回答
0

事实证明,以下内容确实有效,包括我想要的所有扩展 ascii 字符

^
([\w+\s{1}]+\w{1}\.{1})
$
于 2013-01-25T19:19:29.893 回答