0

次の文字列のみを検出したいと思います。

pets ok
pets yes
pets allowed
pets accepted
pets is/are allowed
pets is/are accepted
pets will be considered
pets will considered
pets is/are considered
pet friendly

そして同じことを逆にします:

ok pets
yes pets
...

(上記と同じ、最初から最後まで「ペット」/「ペット」のみ)

私はこれを理解することはできません。

明らかに機能していない現在のパターンを改善するのを手伝っていただければ、お願いします。

/\\b(pet(?:s)?\\s[negotiable|ok|o\\.k|friendly|accept|allow|possible]+|[ok|yes|accept]+\\spet(?:s)?|pet(?:s)?\\s[will|will\\sbe]+\\s[consider|allow|accept|possible]+)\\b/i"
4

2 に答える 2

2

試す

"/\\bpets?\\s[ok|is\\/are allowed]/i" 

そしてシリマー

于 2012-11-02T12:23:57.840 に答える
0

これは、リストした例にのみ一致する超厳密な正規表現です(リストを終了しませんでした):

\b(?:(?:pets (?:ok|yes|(?:(?:is\/are )?(?:allowed|accepted))|(?:(?:will(?: be)?|is\/are) considered)))|(?:(?:ok|yes|(?:(?:is\/are )?(?:allowed|accepted))|(?:(?:will(?: be)?|is\/are) considered))) pets|pet friendly|friendly pet)\b​

Rubular で見る

基本的に、「許可/承認」のバリエーションと「考慮」のバリエーションに分割します。次に、それを逆にコピーしました。

最も人間が読める形式は、次のようになります。

\b(?:pets ok|pets yes|pets allowed|pets accepted|pets is\/are allowed|pets is\/are accepted|pets will be considered|pets will considered|pets is\/are considered|pet friendly|ok pets|yes pets|allowed pets|is\/are allowed pets|accepted pets|is\/are accepted pets|will be considered pets|will considered pets|is\/are considered pets|friendly pet)\b

また、正規表現では、[ ]単語を区切るために文字クラス ( ) を使用しているようですが、実際には非キャプチャ グループ ( (?: ))を使用する必要があります。

于 2012-11-02T14:03:09.133 に答える