2

テキストを解析する必要があります。このテキストは、6 桁のコード、オプションの確認文字列 ('ok'、'yes'、または 'no' のいずれか)、それに続く自由テキストで構成されています。したがって、次のようになります。

123456 Ok Mary had a little lamb

...しかし、同様に可能性があります

123456 Mary had a little lamb

...そして、これら 3 つの部分をそれぞれ個別にキャプチャする必要があります。

私はこの正規表現を持っています:

/^\s*?(\d\d\d\s?\d\d\d)\s*?(yes|no|ok)?\s*?(.*?)$/i

...うまくいきません!常に「はい」、「いいえ」、または「OK」があれば機能するように微調整できますが、それはオプションの要素です。

どんな考えでも大歓迎です。

4

1 に答える 1

4

あなたの問題は、それ\s*?が意味をなさないことです、あなたが望む\s**0以上を意味するので、それはすでにスペースをオプションにしています。

使用する

/^\s*?(\d{3}\s?\d{3})\s*(yes|no|ok)?\s*(.*)$/i

たとえば、JavaScript では、

var str = '123456 Ok Mary had a little lamb';
var arr = str.match(/^\s*?(\d{3}\s?\d{3})\s*(yes|no|ok)?\s*(.*)$/i).slice(1);

与える

["123456", "Ok", " Mary had a little lamb"]
于 2013-09-12T16:42:19.563 に答える