我有一个像some data (920 seconds)
这样的字符串,只想提取920
。
到目前为止,我有\([^)]*\)
可以提取括号之间的所有文本。它返回(920 seconds)
在(
停在第一个空格之后,如何排除括号并提取任何内容?
编辑:920
是一个字符串,而不是整数,这取决于数据的格式
答案 0 :(得分:3)
答案 1 :(得分:1)
在这里,我们可以简单地使用(作为左边界并收集所需的数字:
(.*?\()[0-9]+(.*)
我们可以在数字周围添加一个捕获组并将其存储在$2
中:
(.*?\()([0-9]+)(.*)
如果不需要此表达式,可以在regex101.com中对其进行修改或更改。
jex.im可视化正则表达式:
const regex = /(.*?\()([0-9]+)(.*)/gm;
const str = `some data (920 seconds)
Any other data(10101 minutes)
Any other data(8918 hours)`;
const subst = `$2`;
// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);
console.log('Substitution result: ', result);
# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"(.*?\()([0-9]+)(.*)"
test_str = ("some data (920 seconds)\n"
"Any other data(10101 minutes)\n"
"Any other data(8918 hours)")
subst = "\\2"
# You can manually specify the number of replacements by changing the 4th argument
result = re.sub(regex, subst, test_str, 0, re.MULTILINE)
if result:
print (result)
# Note: for Python 2.7 compatibility, use ur"" to prefix the regex and u"" to prefix the test string and substitution.