3

JavaScriptの正規表現に問題があります。カンマで区切る必要のある文字列がいくつかあります。残念ながら、サブ文字列には引用符がありません。これにより、作業が楽になります。

var str1 = "Three Blind Mice 13 Agents of Cheese Super 18"
var str2 = "An Old Woman Who Lived in a Shoe 7 Pixies None 12"
var str3 = "The Cow Jumped Over The Moon 21 Crazy Cow Tales Wonderful 9"

これらは、PHRASE1(スペースを含む混合タイプ ")INTEGER1(1桁または2桁)PHRASE2(スペースを含む混合タイプ")WORD1(1ワード混合タイプ、スペースなし)INTEGER2(1桁または2桁)の形式です。

だから私は得る必要があります:

result1 = "Three Blind Mice,13,Agents of Cheese,Super,18"
result2 = "An Old Woman Who Lived in a Shoe,7,Pixies,None,12"
result3 = "A Cow Jumped Over The Moon,21, Crazy Cow Tales,Wonderful,9"

txt2re.comを見ましたが、必要なものを完全に取得できず、手作業で区切りました。しかし、脳が大きい人でも、それはできると確信しています。正規表現の例はたくさんありますが、フレーズを処理するものが見つかりませんでした。だから誰か助けてくれないかと思っていました。ありがとうございました。

4

2 に答える 2

3

次のことを試してください。

var s = "Three Blind Mice 13 Agents of Cheese Super 18";
s.replace(/([^\d]+) (\d{1,2}) ([^\d]+) ([A-Z][a-z]+) (\d{1,2})/, '$1, $2, $3, $4, $5')
// "Three Blind Mice, 13, Agents of Cheese, Super, 18"

デモ

于 2012-09-07T09:17:01.770 に答える
3

これは、サンプル文字列で機能する正規表現の試みです。

/^\b((?:[a-z]+ ?)+)\b (\d{1,2}) \b((?:[a-z]+ ?)+)\b (\b[a-z]+\b) (\d{1,2})$/i

基本的に、5つの異なる部分で構成され、それぞれが説明に一致するように設計されています。

  1. \ b((?:[az] +?)+)\ b = azで構成され、オプションでスペースが続く単語に一致します。次に、これを可能な限り何度も定量化します(iフラグにより​​、検索で大文字と小文字が区別されなくなります)
  2. (\ d {1,2}) = 1桁または2桁に一致します。[0-9]と書くこともできます。
  3. \ b((?:[az] +?)+)\ b = nr1と同じ。
  4. (\ b [az] + \ b) = azで構成される単一の単語に一致します
  5. (\ d {1,2}) = nr2と同じ。

注意事項:

  1. ^(件名の開始)と(件名の終了)を使用して完全な文字列のみが考慮されるように、一致を固定しました$
  2. 正規表現の区切り文字の後に、正規表現エンジンの動作を変更するフラグ/.../を追加しました。-フラグを使用すると、大文字と小文字が区別されなくなります。i
  3. 注意点は、「it's」のような収縮は現在の正規表現と一致しないということです。これに対応するには、正規表現グループ1と3を変更する必要があります。
  4. グループは単一のスペースで区切られます。これが変わる可能性がある場合は、グループセパレータを変更する必要があります。

次のように使用できます。

var regex = /^\b((?:[a-z]+ ?)+)\b (\d{1,2}) \b((?:[a-z]+ ?)+)\b (\b[a-z]+\b) (\d{1,2})$/i;
var s = "The Cow Jumped Over The Moon 21 Crazy Cow Tales Wonderful 9";
s = s.replace(regex, '$1, $2, $3, $4, $5');

JS-フィドルデモはこちら

resultCollection編集:処理された結果を保持するために名前が付けられた変数を作成するようにデモを更新しました。これは、キーとしての元の各文字列と、値としての処理された結果の文字列で構成されるオブジェクトです。

于 2012-09-07T09:31:17.050 に答える