文の最初のピリオドまですべての怠惰な正規表現マッチを取得しようとしています。正規表現はすべて最初のピリオドまで一致します
ちょうど "ジャックとジル"を取得したい。この文より:
"ジャックとジルは丘を登ってペールを取る"
/.+\./
は一致して文全体(example)
/(.+?\.)/
マッチ各インスタンス(example)
はちょうど最初のインスタンスを一致させる方法はありますか?
文の最初のピリオドまですべての怠惰な正規表現マッチを取得しようとしています。正規表現はすべて最初のピリオドまで一致します
ちょうど "ジャックとジル"を取得したい。この文より:
"ジャックとジルは丘を登ってペールを取る"
/.+\./
は一致して文全体(example)
/(.+?\.)/
マッチ各インスタンス(example)
はちょうど最初のインスタンスを一致させる方法はありますか?
/^([^.]+)/
^
、のは、それを打破してみましょう、これは期間まで取る期間
\+
ない任意の文字にマッチ改行アンカー
[^.]
ある
そして式は()でカプセル化されてキャプチャされます。
* "^は文字列アンカーの先頭です" *:いいえ、間違っています。Rubyの '^'は、文字列ではなく、行頭にマッチします。文字列の先頭のアンカーは '\ A'です。 –
角括弧の中に' .'がある場合、エスケープする必要はありません。 '[\。]'は '[。]'と同じです。 (そして否定的なカラットはこれを変えない) – CAustin
あなたは正しいです、私はコンセプトが一緒にブレンドされるように\ Aを使用する理由はありません。これを反映するように更新されました。 –
最初のオカレンスだけが必要な場合は、文字列内のすべての結果を返すscan
メソッドを選択しないでください。
> "jack and jill. went up the hill. to fetch a pail."[/.+?\./]
=> "jack and jill."
私は正規表現を使用するように傾斜させることだろうが、他のオプションがあります:あなたはMatchDataインスタンスを返しますが、あなたは、単に書くことができます一致方式を使用することができます。
デモサイトでは、キャレット '^(。+?\。) 'を使用します。 – revo
2番目のパターンで' match'メソッドを使います。 –
@revoが答えたものと同様に、キャプチャグループに一致するようにしたい場合を除き、括弧[demo](https://regex101.com/r/tzaQhs/1/)を使わなくてもかまいません。 – SWLim