[解決済み】RegExp.execを使って文字列からすべてのマッチを抽出するRegEx
2022-04-07 07:46:20
質問
次のような文字列を解析しようとしています。
[key:"val" key2:"val2"]
ここで、内部には任意の key:"val" のペアが存在します。キー名と値を取得したい。 タスクウォーリアーのデータベース形式をパースしようとしているのです。
以下は私のテスト文字列です。
[description:"aoeu" uuid:"123sth"]
これは、キーや値の中にスペース以外のものを入れることができること、コロンの周りにスペースを入れないこと、値は常に二重引用符で囲むことを強調するためのものである。
nodeでは、これが私の出力です。
[deuteronomy][gatlin][~]$ node
> var re = /^\[(?:(.+?):"(.+?)"\s*)+\]$/g
> re.exec('[description:"aoeu" uuid:"123sth"]');
[ '[description:"aoeu" uuid:"123sth"]',
'uuid',
'123sth',
index: 0,
input: '[description:"aoeu" uuid:"123sth"]' ]
しかし
description:"aoeu"
もこのパターンにマッチします。どうすればすべてのマッチを取り戻せますか?
解決方法は?
呼び出しを継続する
re.exec(s)
をループして、すべてのマッチを取得します。
var re = /\s*([^[:]+):\"([^"]+)"/g;
var s = '[description:"aoeu" uuid:"123sth"]';
var m;
do {
m = re.exec(s);
if (m) {
console.log(m[1], m[2]);
}
} while (m);
このJSFiddleで試してみてください。 https://jsfiddle.net/7yS2V/
関連
-
[解決済み] ローカルファイルを開くことができません - Chrome: ローカルリソースのロードが許可されていません
-
[解決済み] jQueryを使ってドロップダウンリスト(セレクトボックス)から選択されたテキストを取得する
-
[解決済み] オブジェクトの配列から、プロパティの値を配列として取り出す。
-
[解決済み] JavaScript の文字列をすべて小文字に変換する
-
[解決済み] 正規表現を使用した電話番号の検証方法
-
[解決済み] JSで文字列が正規表現にマッチするかどうかをチェックする
-
[解決済み] JavaScriptで文字列から数字以外の文字を取り除く
-
[解決済み] 正規表現の全出現回数をマッチングさせる方法
-
[解決済み] 文字列からすべての改行を削除する方法
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Heroku:ノードアプリで「このアプリにはデフォルトの言語が検出されませんでした」エラーがスローされる
-
[解決済み】パッシブイベントリスナー内部でpreventDefaultができない
-
[解決済み】React Js: Uncaught (in promise) SyntaxError: 位置 0 の JSON で予期しないトークン < が発生しました。
-
[解決済み】Uncaught ReferenceError: angular is not defined - AngularJSが動作しない。
-
[解決済み】未定義のプロパティ 'bind' を読み込めない。React.js【重複あり
-
[解決済み】JavaScript ランタイムエラー:'$'が未定義です。
-
[解決済み】FirefoxでGoogle Maps V3をリモートで使用すると「googleが定義されていません」と表示される。
-
[解決済み】このオブジェクトの "forEach "はなぜ関数でないのですか?
-
[解決済み】Babel NodeJS ES6: SyntaxError: 予期しないトークンのエクスポート
-
[解決済み】Javascript、[オブジェクトHTMLInputElement]を表示中。]