Javascript 使用正则表达式提取某些文本
鉴于我的字符串Javascript 使用正则表达式提取某些文本,javascript,regex,Javascript,Regex,鉴于我的字符串6缸,3.2升(3197cc)发动机,需要提取以下内容:6缸和3197cc 此代码失败,不确定如何修复 const rgx = /(\d cyl).*(\d{2,4}?cc)/g; //defined outside a loop //inside the loop we have myString changes every run. let match = rgx.exec(myString); console.log(match[1]); // =&g
6缸,3.2升(3197cc)发动机
,需要提取以下内容:6缸
和3197cc
此代码失败,不确定如何修复
const rgx = /(\d cyl).*(\d{2,4}?cc)/g; //defined outside a loop
//inside the loop we have myString changes every run.
let match = rgx.exec(myString);
console.log(match[1]); // => 6 cyl
console.log(match[2]); // => 97cc <--------- suppose to be 3197cc
const rgx=/(\d cyl)。*(\d{2,4}?cc)/g//在循环外部定义
//在循环中,每次运行都会更改myString。
让match=rgx.exec(myString);
console.log(匹配[1]);//=>6团
console.log(匹配[2]);//=>97cc您没有匹配周围的括号,这导致正则表达式匹配可能的最小匹配(贪婪与非贪婪)
将正则表达式更改为:
/(\d cyl).*\((\d{2,4}cc)\)/g
我从\d{2,4}
中删除了?
,因为根据您编写的内容,似乎需要cc大小(如果您确实希望它是可选的,您可能也希望cc可选)
然后在\((\d{2,4}cc)\
上,我添加了前面带有反斜杠的外圆括号。这是一个括号的文字匹配,现在正是这个括号允许正则表达式正常工作
const rgx=/(\d cyl)。*\(\d{2,4}cc)\)/g//在循环外部定义
//在循环中,每次运行都会更改myString。
让match=rgx.exec(“6缸,3.2升(3197cc)发动机”);
console.log(匹配[1]);//=>6团
console.log(匹配[2]);//=>97cc您没有匹配周围的括号,这导致正则表达式匹配可能的最小匹配(贪婪与非贪婪)
将正则表达式更改为:
/(\d cyl).*\((\d{2,4}cc)\)/g
我从\d{2,4}
中删除了?
,因为根据您编写的内容,似乎需要cc大小(如果您确实希望它是可选的,您可能也希望cc可选)
然后在\((\d{2,4}cc)\
上,我添加了前面带有反斜杠的外圆括号。这是一个括号的文字匹配,现在正是这个括号允许正则表达式正常工作
const rgx=/(\d cyl)。*\(\d{2,4}cc)\)/g//在循环外部定义
//在循环中,每次运行都会更改myString。
让match=rgx.exec(“6缸,3.2升(3197cc)发动机”);
console.log(匹配[1]);//=>6团
console.log(匹配[2]);//=>97cc Lazy:*?
&退出大括号==>您可以添加完整的代码吗。问题中缺少循环和完整的字符串。Lazy:*?
&退出大括号==>您可以添加完整的代码吗。问题中缺少循环和完整字符串。