Ruby正規表現に問題があります。Ruby RegexのANDの使い方
ルビーでAND(&)の正規表現はどうやってですか?
例:
cat and dog
cat
dog
I just want to match "cat and dog"
Ruby正規表現に問題があります。Ruby RegexのANDの使い方
ルビーでAND(&)の正規表現はどうやってですか?
例:
cat and dog
cat
dog
I just want to match "cat and dog"
あなたが好きな何かをすると正のルック先読み
を使用することができます(?=.*cat)(?=.*dog).*
は、それがhere on Rubular更新リンクを参照してください!
この肯定的な先読み(?=.*cat)
は、文字列のどこかに「cat」があるかどうかを確認し、(?=.*dog)
を使用して「dog」に対して同じことが行われます。両方のアサーションが真である場合、完全な文字列は最後に.*
と一致します。
利点は
だけでなく
猫と犬
が、それもマッチします、それはまた
犬と猫と一致するということです
あなたは完全一致が必要な場合は匹の犬や猫
は、この
(?=.*\bcat\b)(?=.*\bdog\b).*
\b
を使用することはすなわち、それは単語と非単語の文字の間で一致し、単語の境界です。はhere
を参照して、正規表現のデフォルトのアクション、即ち、第1マッチこの次にようにそれが続くとなります。
、マッチ「猫」は何が続いた後、「犬」が続くことを意味する
cat.*dog
ようなものを使用し、猫と犬を一致させます。しかし、もう一度私はあなたの質問を誤解しているかもしれません...
それはあなたが望むものによって異なります。
あなたは、あなたの質問は非常に明確ではありません
cat.+dog
それとも
cat.+dog|dog.+cat
それとも
cat +and +dog
ワイルドカードを使用することができます。あなたが(多分単語の一部として)「猫」と「犬」の両方が含まれているだけでこれらの文字列と一致する場合
、あなたが行うことができます:
/^.*(cat.*dog|dog.*cat).*$/
上記の正規表現をします"連結dogma"にマッチしますが、 "連結"にはマッチしません。
あなたは「猫」と「犬」は、自分で単語として表示されませんようにしたい場合:
/^.*(\bcat\b.*\bdog\b|\bdog\b.*\bcat\b).*$/
上記の正規表現は、「猫と犬を」一致ではなく、「連結ドグマ」もしくはます"cat dogma"
出典:http://ruby-doc.org/docs/ProgrammingRuby/html/intro.html#S5
Regexp
Sにはand
オペレータが、それは意味がないという理由だけで、ありません。 は決してと一致します:どのようにString
が両方とも'cat'
と'dog'
となることがありますか?
'schrodinger.pet.species.to_s' –
もちろん、文字列は" cat "と" dog "の両方に同時に指定できます - 猫と犬は同じ文字列"である "。 – jeffdill2