2

免責事項:「in」と「notin」を使用できることは知っていますが、技術的な制約のため、正規表現を使用する必要があります。

私は持っています:

a = "digital clock time fan. Segments featuring digital 24 hour oclock times. For 11+"
b = "nine times ten is ninety"

「時」ではなく「時間」を含むことに基づいて照合したいので、aとbは正規表現を通過し、bのみが通過します

何か案は?

4

1 に答える 1

7

これにはネガティブ先読みを使用できます。

^(?!.*\bo?clock\b).*\btimes\b

説明:

^                 # starting at the beginning of the string
(?!               # fail if
   .*\bo?clock\b    # we can match 'clock' or 'oclock' anywhere in the string
)                 # end if
.*\btimes\b       # match 'times' anywhere in the string

これ\bは単語の境界用であるため、のような文字列と一致しますが、のような'clocked times'文字列では失敗します'timeshare'\bこの動作が必要ない場合は、正規表現内のすべてを削除できます。

例:

>>> re.match(r'^(?!.*\bo?clock\b).*\btimes\b', a)
>>> re.match(r'^(?!.*\bo?clock\b).*\btimes\b', b)
<_sre.SRE_Match object at 0x7fc1f96cc718>
于 2012-04-30T23:05:51.083 に答える