2015-04-18 17:16:31 +0000 2015-04-18 17:16:31 +0000
20
20

特定の単語にマッチする正規表現はどのように書けばいいのでしょうか?

特定の正規表現を動作させようとしているのですが、必要なことができません

基本的には、ROCKETを探して欲しいのです。正規表現は、大文字でも小文字でも、句読点の有無に関わらず、ROCKETにマッチしなければなりませんが、他の単語に含まれている場合はマッチしません。だから、正規表現は、これらのいずれかでトリガされます:

rocket
RoCKEt
hi Rocket
This is a rocket.
ROCKET's engine

しかし、それが

Rocketeer
Sprocket

のようなもので発見されたときにROCKETでトリガされません 私はオンラインの正規表現ジェネレータを使用してそれを右に取得しようとしてきましたが、私はそれが正確に一致するように取得することはできません。

回答 (4)

11
11
11
2015-04-18 17:32:40 +0000

私は、 MSDN正規表現クイックリファレンス

をブックマークすることをお勧めします。A regex that would work would be be:

\W*((?i)rocket(?-i))\W*

何をするかというと、ゼロ以上の (*) 非英数字 (W) 文字を探し、続いてロケットの大文字小文字を区別しないバージョン (((?i)Rocket(?-i) ) ) を探します。ロケットにマッチする用語の周りの余分な括弧は、マッチを別のグループに割り当てます。このように、ロケットという単語はマッチグループ1になります。

UPDATE 1: Mattはコメントで、この正規表現はpythonで使用するものだと言っていました。Pythonは構文が少し異なります。Pythonは構文が若干異なります。 pythonで同じ結果を得るためには、この正規表現を使用し、re.IGNORECASEオプションをcompileまたはmatch関数に渡してください。

\W*(rocket)\W*

(https://regex101.com/#python) [ Regex101 ]&003では、正規表現入力の横のテキストボックスに “i "を入力することでシミュレートすることができます。彼はより良い解決策を投稿してくれました。

10
10
10
2015-04-19 06:17:43 +0000

この場合、先読みはやりすぎだと思いますし、ignorecaseオプションで単語の境界線を使用した方が良いでしょう。

1
1
1
2015-04-19 04:00:42 +0000

grepでは、sed.  を使うことができます。\<rocket\>では、grepオプションで大文字小文字を区別しません ( i gnore case):

grep -i '\<rocket\>'

すべての-i正規表現を大文字小文字を区別しないようにする方法を知りませんが、穴居人の方法が常にあります。

0
0
0
2019-11-23 10:06:05 +0000

句読点に関しては、あなたが味を知るまで答えられません。このスレッドの元になった人は、他のところに移動したかもしれませんが…。そうではありませんか?