Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用正则表达式提取某些文本_Javascript_Regex - Fatal编程技术网

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:
*?
&退出大括号==>您可以添加完整的代码吗。问题中缺少循环和完整字符串。