括号内关键字后的正则表达式匹配字符串
Regex Match string after keyword between brackets
我需要在双引号之间匹配关键字后的值
例如:
zoom_sensitivity "2"
sensitivity "99"
m_rawinput "0"
m_righthand "0"
也有不同的间距:
sensitivity"99"m_rawinput"0"zoom_sensitivity"2"m_righthand"0"
另一个例子:
sensitivity"99" m_rawinput "0"
m_righthand "0"
zoom_sensitivity"2"
我想在敏感度关键字或选择一个
后的两种情况下获得99
值
我尝试的是:
[\n\r]*["|\n\r\s]sensitivity\s*"([^\n\r\s]*)"
但如果关键字位于第一行或任何 whitespace/double 引号之前,则它不匹配,并且对于内联代码,它不仅匹配 99 值。
我相信 Source Engine 从他们的 .cfg 文件中类似地解析它,也许有更好的方法。
您可以使用此正则表达式并从 group1 中捕获您的数字,
\bsensitivity\s*"(\d+)"
因为你想select 99
只在sensitivity
之后作为一个完整的单词,需要在单词周围使用单词边界\b
,比如\bsensitivity\b
和 \s*
允许匹配单词之间的可选空格,然后 "
匹配双引号,然后 (\d+)
匹配一个或多个数字并在 group1 中捕获,最后 "
匹配结束双引号。
你可以简单地使用这个:
(\w+)\s?"(\d+)"
输出
zoom_sensitivity "2" zoom_sensitivity 2
sensitivity "99" sensitivity 99
m_rawinput "0" m_rawinput 0
m_righthand "0" m_righthand 0
sensitivity"99" sensitivity 99
m_rawinput"0" m_rawinput 0
zoom_sensitivity"2" zoom_sensitivity 2
m_righthand"0" m_righthand 0
sensitivity"99" sensitivity 99
m_rawinput "0" m_rawinput 0
m_righthand "0" m_righthand 0
zoom_sensitivity"2" zoom_sensitivity 2
为此:
zoom_sensitivity "2"
sensitivity "99"
m_rawinput "0"
m_righthand "0"
also with different spacing:
sensitivity"99"m_rawinput"0"zoom_sensitivity"2"m_righthand"0"
another example:
sensitivity"99" m_rawinput "0"
m_righthand "0"
zoom_sensitivity"2"
您可以将其放入一个对象中,稍后再查询该对象:
var parse = function(content) {
var myregexp = /(\w+)\s*"(\d+)"/mg;
var match = myregexp.exec(content);
while (match != null) {
// matched text: match[0]
// match start: match.index
// capturing group n: match[n]
console.log(match[1] + " => " + match[2]);
// re-run the regex for the next item
match = myregexp.exec(content);
}
}
parse(document.getElementById("example1").innerHTML);
console.log("-----------");
parse(document.getElementById("example2").innerHTML);
console.log("-----------");
parse(document.getElementById("example3").innerHTML);
<div id="example1">
zoom_sensitivity "2"
sensitivity "99"
m_rawinput "0"
m_righthand "0"
</div>
<div id="example2">
sensitivity"99"m_rawinput"0"zoom_sensitivity"2"m_righthand"0"
</div>
<div id="example3">
sensitivity"99" m_rawinput "0"
m_righthand "0"
zoom_sensitivity"2"
</div>
我需要在双引号之间匹配关键字后的值 例如:
zoom_sensitivity "2"
sensitivity "99"
m_rawinput "0"
m_righthand "0"
也有不同的间距:
sensitivity"99"m_rawinput"0"zoom_sensitivity"2"m_righthand"0"
另一个例子:
sensitivity"99" m_rawinput "0"
m_righthand "0"
zoom_sensitivity"2"
我想在敏感度关键字或选择一个
后的两种情况下获得99
值
我尝试的是:
[\n\r]*["|\n\r\s]sensitivity\s*"([^\n\r\s]*)"
但如果关键字位于第一行或任何 whitespace/double 引号之前,则它不匹配,并且对于内联代码,它不仅匹配 99 值。 我相信 Source Engine 从他们的 .cfg 文件中类似地解析它,也许有更好的方法。
您可以使用此正则表达式并从 group1 中捕获您的数字,
\bsensitivity\s*"(\d+)"
因为你想select 99
只在sensitivity
之后作为一个完整的单词,需要在单词周围使用单词边界\b
,比如\bsensitivity\b
和 \s*
允许匹配单词之间的可选空格,然后 "
匹配双引号,然后 (\d+)
匹配一个或多个数字并在 group1 中捕获,最后 "
匹配结束双引号。
你可以简单地使用这个:
(\w+)\s?"(\d+)"
输出
zoom_sensitivity "2" zoom_sensitivity 2
sensitivity "99" sensitivity 99
m_rawinput "0" m_rawinput 0
m_righthand "0" m_righthand 0
sensitivity"99" sensitivity 99
m_rawinput"0" m_rawinput 0
zoom_sensitivity"2" zoom_sensitivity 2
m_righthand"0" m_righthand 0
sensitivity"99" sensitivity 99
m_rawinput "0" m_rawinput 0
m_righthand "0" m_righthand 0
zoom_sensitivity"2" zoom_sensitivity 2
为此:
zoom_sensitivity "2"
sensitivity "99"
m_rawinput "0"
m_righthand "0"
also with different spacing:
sensitivity"99"m_rawinput"0"zoom_sensitivity"2"m_righthand"0"
another example:
sensitivity"99" m_rawinput "0"
m_righthand "0"
zoom_sensitivity"2"
您可以将其放入一个对象中,稍后再查询该对象:
var parse = function(content) {
var myregexp = /(\w+)\s*"(\d+)"/mg;
var match = myregexp.exec(content);
while (match != null) {
// matched text: match[0]
// match start: match.index
// capturing group n: match[n]
console.log(match[1] + " => " + match[2]);
// re-run the regex for the next item
match = myregexp.exec(content);
}
}
parse(document.getElementById("example1").innerHTML);
console.log("-----------");
parse(document.getElementById("example2").innerHTML);
console.log("-----------");
parse(document.getElementById("example3").innerHTML);
<div id="example1">
zoom_sensitivity "2"
sensitivity "99"
m_rawinput "0"
m_righthand "0"
</div>
<div id="example2">
sensitivity"99"m_rawinput"0"zoom_sensitivity"2"m_righthand"0"
</div>
<div id="example3">
sensitivity"99" m_rawinput "0"
m_righthand "0"
zoom_sensitivity"2"
</div>