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

以下が実際に機能し、必要なすべての拡張ASCII文字が含まれていることがわかります

^
([\w+\s{1}]+\w{1}\.{1})
$
于 2013-01-25T19:19:29.893 に答える
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)

最初の一致グループは複数回一致する可能性があるため (最後の単語を除く各単語に対して 1 回)、 を使用して最後から 2 番目の単語にのみアクセスできますmatch.group(1)

ところで、{1}この場合、表記法は必要ありません。1 回のみのマッチングがデフォルトの動作であるため、このビットは削除できます。

角かっこの余分なセットは間違いなくあなたを助けていませんでした:)

于 2013-01-25T11:35:59.367 に答える