我有一个如下字符串:
SOME TEXT (BI1) SOME MORE TEXT (BI17) SOME FINAL TEXT (BI1234)
问题
我正在尝试使用正则表达式来获取大括号之间的信息,例如结束字符串看起来像:
BI1 BI17 BI1234
我在stackoverflow上找到了这个例子,它将获得第一个值BI1,但之后会忽略其余的值。 Get text between two rounded brackets
这是我通过以上链接创建的REGEX:/\(([^)]+)\)/g
但它包括括号,我想删除它们。
我正在使用此网站尝试解决此查询,该查询有一个测试窗口,以查看输入的正则表达式是否有效: http://www.regexr.com
其他信息
感谢您对此事的任何帮助。
答案 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;
答案 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
产生看起来有点像这样的代码:
\).*?\(|^.*?\(|\).*?$
(如果你这样做的话,你需要过滤出在开头和结尾出现的空字符串 - 因此需要额外的操作。)