質問

私はい合わせリストの言葉では簡単に十分な場合はその言葉を真に。例えば、 /\b (pop|push) \b/gsx 実行した場合に対する文字列

ポップのドアを押しでポップ戻る

マッチのポップを押しなポップされた.

が必要で同様の機能語を含む文字にするとともに、適語境界を参考にしています。ながらやっていく必要がある /\b (reverse!|push) \b/gsx 実行した場合に対する文字列

押し逆!逆!押し

み合逆!を押しも一致しない逆!になりましたこのように、regexがなくなるわけではありませんがもう使わ\bんregexスマートもこれらのファンキーは不要ですか?

役に立ちましたか?

解決

単語の終わりには、\ bは(次の文字がある場合)、直前の文字が単語文字、および次の文字だった」という意味の単語の文字ではありません。あなたが最初の条件をドロップしたいそこに可能性があるため、ます。

:否定先読みであなたを残し、「単語」の終わりに非単語の文字で
/\b (reverse!|push) (?!\w)/gx

私はAS3の正規表現は、先読みをサポートするかなり確信しています。

他のヒント

最初の問題は、必要な三(がつ)の場合に変更はない。

  • /\breverse!(?:\s|$)/ 逆!によるも
  • /\bpush\b/ 押しによるも
  • /\breverse!push\b/ 一緒に
  • /\bpushreverse!(?:\s|$)/ これは、可能な場合

第二の問題であること \b ん試合後の "!" ではありませんので \w.これがその Perl5言約 \b, いにご相談ください。docs見彼らが同意する場合は:

単語境界("\b")はスポットとな文字は"\w"のもと、"\W"のその他の面では、計数の架空の文字の開始と終了のとして文字列のマッチングの"\W"です。(内の文字クラス"\b"はbackspaceではなく単語の境界としても、通常はずダブル-引用文字列になります。)

なので、正規表現する必要のあるもののように

/ \b ( reverse!push | reverse! | push ) (?: \s | \b | $ )+ /gx;

私は左側 /s がない期間にこの正規表現で治療として単線んでいないことです。の場合 /s な治療としてのシングルラインエンジンすべきなのに追加します。また、読み上げるエンジンの取扱変更.私は、Perl5の動きの手配が必要となる項目はこのような逆!常に勝逆!押し).

あなたは何か同等で\ bを置き換えることができますが、あまり厳密ます:

/(?<=\s|^)(reverse!|push)(?=\s|$)/g

この方法では、\bの制限要因は、(それが唯一の実際の\w語文字の前または後に一致させることができること)が除去されます。

さて、空白または有効な区切り文字列関数の開始/終了、および内部表現を簡単に例えば検索用語のリストから、実行時に構築することができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top