2017-03-04 2 views
-5

私はperlの文字列からテキストを抽出するための正規表現を書こうとしています。「。」までのマッチアップ方法文字列でperlを使用

文字列は何かのようにすることができます:私は男だ

。私は女性ではない。

私は「」の最初の出現に一致しますが、私は[^.]を使用している場合、それは私が 'の代わりに 『私は男だ』​​の最初の文字だけを返しますすなわち。

[]式はどのように記述しますか?

+1

'^。*?\。'は始めから始まり、 '\ .'またはあなたの望みの '。'までキャプチャします。 – MohaMad

答えて

2

あなたは使用することができ、文字列の先頭にドットでない文字の任意の数を意味し、

^[^.]* 

+0

最初のキャレット '^'は必要ありません。とにかく文字列の先頭で正規表現マッチングが始まるので、 '[^。] *'はうまくいくでしょう。 – Borodin

+3

'^'を使うと読みやすくなります。 '[^。] *のような複雑なパターンで、不必要なバックトラックを防ぐこともできるので、良い習慣です。 – ikegami

-1

あなたは数量詞(あなたがあなたのパターンをしたい回数を追加する必要があります一致させる)。デフォルトでは、1つです。

[^.]{5} 

これは.に5回一致します。

[^.]{2,} 

これは、.の2倍以上のものと一致します。

[^.]{2,5} 

これは、.,2,3,4,5回以外のものと一致します。

[^.]* 

数量詞*は、(それが{0,}のショートカットです)、0回以上を意味します。これは、. 0回以上でないものと一致します。

[^.]+ 

数量詞+は、1回以上(それは{1,}のショートカットです)を意味します。これは、.ではないものと一度以上マッチします。 これはあなたが欲しいものです

[^.]? 

0回を意味したり(それが{0, 1}のショートカットです)一度?数量詞。したがって、これは.の0回または1回ではないものと一致します。

+0

なぜこれをdownvoteしますか? – math2001

関連する問題