0

私は持っています

^\s*(\w+(\,\w+)*\s*(:|,|\()(\(|\[)?\s*)

これは、このような2つの文字列セットから「コマンド」を抽出するのに最適です。

**Strict pattern**
command:some text
command: some text
command,command2: some text

**Loose pattern**
command :some text
command( some text )
command, some txt

これが私の問題をより明確にするためのリンクです。 http://rubular.com/r/epTIiU32Dj

厳密でパターンを失うために2つの別々の正規表現を書いていただけますか?

したがって、1つのRegExpを使用すると、strict-pattern-commandsを取得し、他のRegExpを使用すると、lose-pattern-commandsを取得します。

何かをしようとしているときはいつでも、お互いのパターンを踏み越えてしまいます。パターンごとに機能する正規表現を取得できません。

4

1 に答える 1

1

まず、グループと代替の代わりに文字クラスを使用することで、正規表現を少し短くすることができます ( http://www.rubular.com/r/pI7dk7qzxS ):

^\s*(\w+(,\w+)*\s*[:,(\[]\s*)


厳密なパターンは次のとおりです ( http://www.rubular.com/r/xRIQuAR6TM ):

^\s*(\w+(,\w+)*:\s*)


そして、ここに緩いパターンがあります ( http://www.rubular.com/r/9ztWBYsj1a ):

^\s*(\w+(,\w+)*(\s+:|\s*[,(\[]\s+)\s*)

これらはあなたが提供したサンプルデータに対して機能することに注意してください(Rubularリンクで確認できるように)が、サンプルデータと正規表現だけから、これがすべての潜在的なケースをカバーするかどうかを判断するのは困難でした。文法をもっと徹底的に説明する必要があります。

于 2012-04-10T16:57:59.203 に答える