次の文字列があるとしましょう
def name1
toSomething
def name2
toSomethingElse
どうすれば と を見つけることができますname1かname2。
を使用するstring.match(/(?:def) (.*)/)と、次のことがわかります。
name1
toSomething
def name2
toSomethingElse
では、文字列を 1 行ずつ検索するにはどうすればよいでしょうか。
次の文字列があるとしましょう
def name1
toSomething
def name2
toSomethingElse
どうすれば と を見つけることができますname1かname2。
を使用するstring.match(/(?:def) (.*)/)と、次のことがわかります。
name1
toSomething
def name2
toSomethingElse
では、文字列を 1 行ずつ検索するにはどうすればよいでしょうか。
あなたは試すことができます:
/(?:def)\s+([^\s]+)/g
最初のグループには、必要なもの (name1など) があります。
ここを参照してください:http://regex101.com/r/rH0yH8
実行方法の例:
var s = "def name1\ntoSomething\n\ndef name2 \ntoSomethingElse"
var re = /(?:def)\s+([^\s]+)/g
while (x = re.exec(s)) {
alert(x[1])
}
/^def (.*)/gm
やります。フラグはgすべてのインスタンスに一致し、mフラグにより^、入力の先頭のみではなく、行の先頭で一致します。
を使用.execすると、ループして一度に 1 つずつ結果を取得できます。
var myString = 'def foo\n boo\n\ndef bar\n far\n';
for (var re = /^def (.*)/gm, match; (match = re.exec(myString));) {
alert(match[1]);
}
または、文字列で使用.matchしてすべての結果を 1 つの配列に取得できますが、それではキャプチャ グループが得られません。
var myString = 'def foo\n boo\n\ndef bar\n far\n';
var re = /^def (.*)/gm;
var matches = myString.match(re);
.改行と一致しないため、正規表現は最初の行で一致するはずです。
とは言え、やってみる/(?:def)\s+(\S*)/