Regex,它搜索一个起始字符,介于两者之间的任何字符,然后是一个结束字符

Regex that searches for a starting character, anything in between, then an ending character?

本文关键字:字符 一个 结束 任何 然后 两者之间 搜索 Regex      更新时间:2024-03-16

所以,基本上,我有一个从我的网站复制的大量值列表,希望它们只是纯文本。我需要为Javascript创建一个正则表达式,删除不需要的东西

以下是眼前的价值观:

<option value="111122223333">Some text (45)</option>
<option value="345835385390">Some text (10)</option>
<option value="456727235764">Some text (50)</option>

以下是他们之后需要的样子:

Some text
Some text
Some text

使用1个正则表达式可以做到这一点吗?还是需要许多正则表达式?

我的想法是,正则表达式查找介于两者之间的<,然后>可以用于打开和关闭option标记。然后,可以稍微修改regex,以查找打开(,然后关闭),以删除"Some text"字符串左侧的计数器数字。

仍然在学习regex,所以如果有人能在他们的答案中添加一个小的解释,让我对它有一些了解,那就太好了。谢谢。

如果您可以使用像jQuery这样的库,那么您可能可以简化它。在这种情况下,您可以使用jQuery对象的text()方法来获取内部文本,然后运行一个简单的regex来删除"(xx)"部分:

var vals = $('option').map(function() {
   return $(this).text().replace(/'s*'('d*')$/, '');
});
// vals => ["some text", "some text", "some text"]

这是一把小提琴:http://jsfiddle.net/jhummel/U46pH/

如果你不能使用库,我想你正在寻找一个正则表达式,比如:

/<[^>]+>([^'(]+)'('d*')<[^>]+>/g

编辑

您要求提供正则表达式的解释,让我们逐一查看

  • /=启动正则表达式
  • <=查找'<'字符
  • [^>]+=一次或多次查找任何不是'>'的字符
  • >=查找'>'字符
  • (=启动一个组,parens中的任何内容都将保存以备以后使用
  • [^(]+=查找一次或多次非"("字符-需要用反斜杠转义,因为paren是regex中的保留字符
  • )=关闭组
  • (=找到一个"("字符-需要再次使用反斜杠对其进行转义
  • ''d*=查找任何数字零次或多次
  • )=找到一个")"字符-再次转义
  • <=查找'<'字符
  • [^>]+=找到一个或多个音符为'>'的任何字符
  • >=查找'>'字符
  • /=结束正则表达式
  • g=正则表达式标志。意味着在第一场比赛后发现所有比赛都没有停止

如果这就是您希望完成的全部,那么您可以使用以下内容:

(>)(.+)(<)

然后把第二组从比赛中抢出来。

编辑:括号用于表示组。