我需要从字符串中提取包含在两个分隔符之间的一组字符,而不返回分隔符本身。
一个简单的例子应该会有所帮助:
目标:提取方括号之间的子字符串,不返回方括号本身。
基本字符串:这是一个测试字符串[或多或少]
如果我使用下面的reg。前女友。
\[.*?\]
比赛[差不多]进行得很顺利。我只需要得到更多或更少(没有括号)。
有可能做到吗?
我需要从字符串中提取包含在两个分隔符之间的一组字符,而不返回分隔符本身。
一个简单的例子应该会有所帮助:
目标:提取方括号之间的子字符串,不返回方括号本身。
基本字符串:这是一个测试字符串[或多或少]
如果我使用下面的reg。前女友。
\[.*?\]
比赛[差不多]进行得很顺利。我只需要得到更多或更少(没有括号)。
有可能做到吗?
当前回答
下面是一个带有明显分隔符(X和Y)的一般示例:
(?<=X)(.*?)(?=Y)
在这里,它用于查找X和y之间的字符串。
其他回答
我在使用regex和bash脚本时遇到了同样的问题。 我使用了一个两步解决方案,使用管道并应用grep -o
'\[(.*?)\]'
首先,然后
'\b.*\b'
显然在其他答案上没有那么有效,但这是另一种选择。
如果需要提取不带括号的文本,可以使用bash awk
echo[你好mundo”|啊- f”[][]{打印2美元的”
结果:
你好世界
去掉[]的用法:
\[.+\]
下面是一个带有明显分隔符(X和Y)的一般示例:
(?<=X)(.*?)(?=Y)
在这里,它用于查找X和y之间的字符串。
这个特别适用于javascript的正则表达式解析器/[^[\]]+(?=])/g
在控制台中运行即可
var regex = /[^[\]]+(?=])/g;
var str = "This is a test string [more or less]";
var match = regex.exec(str);
match;