提取特定术语“硬石”

时间:2019-05-20 22:25:56

标签: regex

我正在尝试使用正则表达式从以下句子中提取特定单词“ hardrock”

给出句子:

exact

我只需要单词Hardrock而不是句子中的hardrock-victor即可。

给出句子:

  

硬岩,胜利者,alpha,亚光,硬岩胜利者,ben,硬岩,rocker,ranzian,硬岩

我尝试使用正则表达式ratio,但它也与hardrock-victor匹配。 https://www.regextester.com/15

请使用正则表达式帮助我,该正则表达式仅提取所有硬岩,而不提取硬岩胜利者

4 个答案:

答案 0 :(得分:2)

这可能有效,但是每个匹配项都包含您可能不需要的字符。

(hardrock)([^-]|$)

Full match: hardrock,
Group 1: hardrock
Group 2: ,

Full match: hardrock,
Group 1: hardrock
Group 2: ,

Full match: hardrock
Group 1: hardrock
Group 2: 

答案 1 :(得分:2)

搜索词可以位于^的开头,$的末尾,或者被,包围

这是使用环视方法从结果中排除定界符的方法:

(?<=^|,)hardrock(?=,|$)

regex101

答案 2 :(得分:1)

如果输入用,分隔,则必须这样匹配:
(输入开始或,)硬摇滚(输入结束或,

您可以尝试(^|,)(hardrock)($|,)
如果您不想捕获,,请使用(?:^|,)(hardrock)(?:$|,)

答案 3 :(得分:0)

在这里,我们可能希望提取hardrock,不要在其后加上破折号。有几种表达式可以做到这一点,例如:

(hardrock)[^-]

Demo

或者我们可以收集第一个捕获组中的所有字符,然后在第二个捕获组中获得所需的hardrock

([\s\S]*?)((hardrock)[^-]|hardrock$)? 

enter image description here

const regex = /([\s\S]*?)((hardrock)[^-]|hardrock$)?/gm;
const str = `matt,hardrock,victor,ben,hardrock,rocker,ranzian,hardrock,hardrock,victor,alpha,matt,hardrock-victor,ben,hardrock,rocker,ranzian,hardrock,matt,hardrock,victor,ben,hardrock,rocker,ranzian,hardrock,hardrock,victor,alpha,matt,hardrock-victor,ben,hardrock,rocker,ranzian,hardrock`;
const subst = `$2`;

// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);

console.log('Substitution result: ', result);

RegEx

如果不需要此表达式,可以在regex101.com中对其进行修改或更改。

RegEx电路

jex.im还有助于可视化表达式。

enter image description here

Demo

如果不需要逗号,我们可以使用另一个捕获组:

([\s\S]*?)(hardrock)([^-]|$)

enter image description here

const regex = /([\s\S]*?)(hardrock)([^-]|$)/gm;
const str = `hardrock,victor,ben,hardrock,rocker,ranzian,hardrock,hardrock,victor,alpha,matt,hardrock-victor,ben,hardrock,rocker,ranzian,hardrock,matt,hardrock,victor,ben,hardrock,rocker,ranzian,hardrock,hardrock,victor,alpha,matt,hardrock-victor,ben,hardrock,rocker,ranzian,hardrock`;
const subst = `$2\n`;

// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);

console.log('Substitution result: ', result);

Demo