我想创建一个正则表达式,我想要提取满足模式的字符串。
输入字符串可以以下面两种可能的方式出现
type MyClass inherits SomeClass,SomeOtherClass implements Node
type MyClass inherits SomeClass, SomeOtherClass implements Node
注意:实现单词可以是
extend
/union
/intersection
等。
正则表达式应该从上面的输入字符串中提取"inherits SomeClass, SomeOtherClass"
字符串。
我尝试了多个SO答案和不同的在线资源,但无法获得相同的成功。我使用的/inherits\s(.*?)\s/mg
仅适用于第一种情况。
满足这两种情况的正则表达式是什么?帮助将是欣赏。
答案 0 :(得分:1)
检查字符串后面是implements
var regex = /inherits\s+(.*)\s+(?=implements?)/mg;
var str1 = "type MyClass inherits SomeClass,SomeOtherClass implements Node";
var str2 = "type MyClass inherits SomeClass, SomeOtherClass implements Node";
str1.match( regex ) //["inherits SomeClass,SomeOtherClass "]
str2.match( regex ) //["inherits SomeClass, SomeOtherClass "]
答案 1 :(得分:1)
您可以使用
/inherits\s+\w+(?:\s*,\s*\w+)*/g
请参阅regex demo。
<强>详情
inherits
- 文字子字符串\s+
- 1+空格\w+
- 1个字母字母(字母,数字或下划线)(?:\s*,\s*\w+)*
- 零次或多次(*
)次出现:
\s*,\s*
- 包含0 +空格字符的,
\w+
- 1 + word chars JS演示:
var regex = /inherits\s+\w+(?:\s*,\s*\w+)*/g;
var input1 = "type MyClass inherits SomeClass,SomeOtherClass implements Node";
var input2 = "type MyClass inherits SomeClass, SomeOtherClass implements Node";
var result1 = input1.match(regex);
var result2 = input2.match(regex);
document.write("result 1: "+ result1);
document.write("<br>")
document.write("\n result 2: "+ result2);
&#13;