【发布时间】:2012-10-05 09:05:49
【问题描述】:
我正在使用以下正则表达式来匹配所有单词:
mystr.replace(/([^\W_]+[^\s-]*) */g, function (match, p1, index, title) {...}
请注意,单词可以包含特殊字符,例如德语变音符号。 如何匹配除括号内的单词之外的所有单词?
如果我有以下字符串:
here wäre c'è (don't match this one) match this
我想得到以下输出:
here
wäre
c'è
match
this
尾随空格并不重要。 有没有一种简单的方法可以在 javascript 中使用正则表达式来实现这一点?
编辑: 我无法删除括号中的文本,因为最终字符串“mystr”也应该包含此文本,而字符串操作将在匹配的文本上执行。 “mystr”中包含的最终字符串可能如下所示:
Here Wäre C'è (don't match this one) Match This
【问题讨论】:
-
我认为使用单个正则表达式是不可能的,可能你需要先用它们的内容去掉括号。
-
您是否需要考虑嵌套的(像这样(甚至是这样))括号?如果是这样,您将不得不对嵌套施加上限或转到非基于 RE 的解决方案。
-
无需考虑嵌套括号。可以有多个 parentese,但它们不会嵌套。例如“(喜欢这个)和喜欢(这个)”
-
我接受 Fabrizio 的回答,因为它在使我的问题更具体之前是正确的。为了解决我的问题,我将在回调函数中搜索打开和关闭括号。这不如正则表达式好,但效果很好。
标签: javascript regex