回答:
使用停止で始まる行のみを一致させたい場合
^stop
ストップという単語で始まり、その後にスペースが続く行に一致させる場合
^stop\s
または、stopという単語で始まり、その後にスペースまたはその他の非単語文字のいずれかが続く行に一致させる場合(正規表現のフレーバーが許可する場合)
^stop\W
一方、後続の文字列は、ほとんどの正規表現フレーバーの文字列の先頭にある単語に一致します(これらのフレーバーでは、\ wは\ Wの反対に一致します)。
^\w
フレーバーに\ wショートカットがない場合は、使用できます
^[a-zA-Z0-9]+
この2番目のイディオムは文字と数字のみに一致し、シンボルにはまったく一致しないことに注意してください。
正規表現フレーバーマニュアルを確認して、許可されているショートカットと、それらが正確に一致するもの(およびUnicodeの扱い方)を確認してください。
^stop\b
行末を含むすべての境界を許可することを忘れないでください
これを試して:
/^stop.*$/
説明:
その停止の後に空白を強制したい場合は、次のようにRegExを変更できます。
/^stop\s+.*$/
注:上記のRegExでは、ストップワードの後にスペースが続く必要があることにも注意してください。:それだけ含まれている行と一致しないように停止を
単語の後に何かを一致させたい場合は、行の先頭だけでなく、次のものを使用できます:\bstop.*\b
-単語の後に行
それとも、文字列の使用中の単語を一致させたい場合\bstop[a-zA-Z]*
- ストップで始まる単語だけを
または、^stop[a-zA-Z]*
単語のみのストップ付きの行の先頭- 最初の単語のみ
行全体^stop.*
- 文字列の最初の行のみ
そして、改行を含めて、stopで始まるすべての文字列に一致させたい場合は、次のようにします。/^stop.*/s
- stopで始まる複数行の文字列
/stop([a-zA-Z])+/
すべてのストップワードに一致します(stop、stopped、stoppingなど)
ただし、文字列の先頭にある「stop」だけを一致させたい場合
/^stop/
するでしょう:D
この問題に対しては、単純な正規表現によるアプローチはお勧めしません。他の無関係な単語の部分文字列である単語が多すぎるため、すでに提供されているより単純なソリューションを過度に適応させようとすることに夢中になってしまうでしょう。
最初にテキストを処理するには、少なくとも単純なステミングアルゴリズム(Porterステマーを試してください。ほとんどの言語で利用可能な無料のコードがあります)が必要です。この処理済みテキストと前処理済みテキストを、2つの別々のスペース分割配列に保持します。アルファベット以外の各文字も、この配列で独自のインデックスを取得するようにしてください。フィルターにかけている単語のリストが何であれ、それらも阻止します。
次のステップは、ステムされた「ストップ」ワードのリストに一致する配列インデックスを見つけることです。それらを未処理の配列から削除し、スペースで再結合します。
これは少しだけ複雑ですが、アプローチの信頼性ははるかに高くなります。よりNLP指向のアプローチの価値に疑問がある場合は、重大な間違いを調査することをお勧めします。
単語を「stop」で開始する場合は、次のパターンを使用できます。「^ stop。*」
これは、stopで始まり、その後に何かが続く単語に一致します。
"^stop"
か?
code
String line = "stopped";
String pattern = "^stop";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(line);
System.out.println(m.find( )); //prints true
System.out.println(line.matches(pattern)); //prints false