次の文字列があるとしましょう
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*)/