別の正規表現に問題があります。これについては、私のコードはパターンを探すことになっています:
re.compile(r"kill(?:ed|ing|s)\D*(\d+).*?(?:men|women|children|people)?")
ただし、あまりにも積極的に一致しています。たまたま「殺す」という単語が含まれている文と一致します。ただし、パターンは、テキストのさらに下の桁に達するまで収集を続けます。特に、それは一致しています:
killed in an apparent u.s. drone attack on a car in yemen on sunday, tribal sources and local officials said.the men's car was driving through the south-eastern province of maareb, a mostly desert region where militants have taken refuge after being driven from southern strongholds.yemen, where al qaeda militants exploited a security vacuum during last year's uprising that ousted president ali abdullah saleh, has seen an in10
これは私が求めている行動ではありません。このパターンが1つの文の中に見つからない場合は、失敗させたいと思います。
私が疑似コードで実装しようとしている解決策は次のとおりです。
find instance of 'kill'
if what follows contains a period (\.) before a digit, do not match.
失敗した実装は次のようになります。
re.compile(r"kill(?:ed|ing|s)\D*(?!:\..*?)(\d+).*?(?:men|women|children|people)?")
「後読み」を試しましたが、幅を指定する必要があります。上記で私がやろうとしているのは、「kill」の末尾に一致し、その後に数字以外の文字が続くことですが、ピリオドには一致しません。それ以外は、後の数字の前に自由に続くことができます。
悲しいことに、このコードは私のテストではまったく同じように動作します。どんな助けでもいただければ幸いです。