REGEX - 括号后获取数据直到结束括号

时间:2016-10-20 14:08:25

标签: javascript regex

我有一个如下字符串:

SOME TEXT (BI1) SOME MORE TEXT (BI17) SOME FINAL TEXT (BI1234)

问题

我正在尝试使用正则表达式来获取大括号之间的信息,例如结束字符串看起来像:

BI1 BI17 BI1234

我在stackoverflow上找到了这个例子,它将获得第一个值BI1,但之后会忽略其余的值。 Get text between two rounded brackets

这是我通过以上链接创建的REGEX:/\(([^)]+)\)/g但它包括括号,我想删除它们。

enter image description here

我正在使用此网站尝试解决此查询,该查询有一个测试窗口,以查看输入的正则表达式是否有效: http://www.regexr.com

其他信息

  • 也可以有任意数量的数字,这就是为什么我给出了3个不同的例子。
  • 这是一个连续的字符串,而不是单独的字符串

感谢您对此事的任何帮助。

2 个答案:

答案 0 :(得分:1)

如果您需要保留所有内部括号并删除其他所有内容,则可以使用



var str = "SOME TEXT (BI1) SOME MORE TEXT (BI17) SOME FINAL TEXT (BI1234)";
var result = str.replace(/.*?\(([^()]*)\)/g, " $1").trim();
console.log(result);




如果您只需要在括号内获得BI +位数模式,请使用

/.*?\((BI\d+)\)/g

<强>详情:

  • .*? - 匹配除了换行符号之外的任何0 +字符
  • \( - 匹配(
  • (BI\d+) - 第1组捕获BI + 1位或更多位数(\d+)(或[^()]* - 除(以外的零个或多个字符和{ {1}})
  • ) - 结束\)

要将所有值作为数组(例如,以便以后加入),请使用

&#13;
&#13;
)
&#13;
&#13;
&#13;

答案 1 :(得分:1)

虽然使用 正则表达式无法做到这一点,但您可以使用import functools def announce(func): """Print a function's arguments and return value as it's called.""" @functools.wraps(func) def announced_func(*args, **kwargs): rv = func(*args, **kwargs) print('In: {0}, {1}'.format(args, kwargs)) print('Out: {}'.format(rv)) return rv return announced_func @announce # add = announce(add) def add(a, b): return a + b add(2, 5) # In: (2, 5), {} # Out: 7 # 7 和以下正则表达式执行此操作:

string#split

产生看起来有点像这样的代码:

\).*?\(|^.*?\(|\).*?$

(如果你这样做的话,你需要过滤出在开头和结尾出现的空字符串 - 因此需要额外的操作。)