をキャプチャしていない、私は文字列が含まれているスニペット「言語」の種類をキャプチャするために苦労しています:メイク正規表現は、だから、ORキャプチャグループ
File (En,Fr,De,Es,It).doc <== should match all 5 languages
File (En,Fr) (Required).doc <== should match `En` and `Fr`
File (Enfoo,Fr).doc <== should match only `Fr`
File (E,Fr).doc <== should match only `Fr`
私の現在の正規表現:
((\(|,)En(\)|,))|((\(|,)Fr(\)|,))|((\(|,)De(\)|,))|((\(|,)Es(\)|,))|((\(|,)It(\)|,))
それが何を意味する:
((\(|,) <== either starts with `open parenthesis` or `comma` (1)
En <== the language (2)
(\)|,)) <== either ends with `close parenthesis` or `comma` (3)
その後、私はちょうど正規表現OR
を追加(|)
あなたが見ることができるように、問題:regexr.com/3ev6pは、第二言語のスニペットがFr
つまりがある場合、それは勝ったということです最初の言語スニペットEn
がすでにopen parenthesis
またはcomma
をキャプチャ/占有していて、第2言語スニペットFr
が一致しないため、正規表現(1)
を満たしていません。
あなたはすべての言語スニペットを完全にキャプチャする方法を知っていますか?私はPHPのpreg_match_all()
を使用してこれらすべてを取得する予定です。誰かが助けることを願っています。 ありがとうございました!
私が正しく理解しているかどうかわかりませんが、これはあなたが望むものですか? https://regex101.com/r/PAwqGg/1 – sinisake
このhttp://regexr.com/3ev6sはどうですか? –
@ Mi-創造性、境界はすべての言語を対象とする必要があります。 ;) – sinisake