我有一个字符串,里面有两个单引号,'字符。在单引号之间是我想要的数据。
我怎么能写一个正则表达式提取“我想要的数据”从下面的文本?
mydata = "some string with 'the data i want' inside";
我有一个字符串,里面有两个单引号,'字符。在单引号之间是我想要的数据。
我怎么能写一个正则表达式提取“我想要的数据”从下面的文本?
mydata = "some string with 'the data i want' inside";
当前回答
在javascript中:
mydata.match(/'([^']+)'/)[1]
实际的regexp是:/'([^']+)'/
如果你使用非贪婪修饰符(另一篇文章),它是这样的:
mydata.match(/'(.*?)'/)[1]
它更干净。
其他回答
这群人对我不起作用。我使用group(0)来查找url版本。
Pattern urlVersionPattern = Pattern.compile("\\/v[0-9][a-z]{0,1}\\/");
Matcher m = urlVersionPattern.matcher(url);
if (m.find()) {
return StringUtils.substringBetween(m.group(0), "/", "/");
}
return "v0";
这里有一个简单的语句:
String target = myData.replaceAll("[^']*(?:'(.*?)')?.*", "$1");
通过将匹配组设置为可选,还可以通过在这种情况下返回空白来满足找不到引号的需求。
见现场演示。
String dataIWant = mydata.split("'")[1];
参见现场演示
你不需要正则表达式。
将apache commons lang添加到您的项目(http://commons.apache.org/proper/commons-lang/),然后使用:
String dataYouWant = StringUtils.substringBetween(mydata, "'");
在javascript中:
mydata.match(/'([^']+)'/)[1]
实际的regexp是:/'([^']+)'/
如果你使用非贪婪修饰符(另一篇文章),它是这样的:
mydata.match(/'(.*?)'/)[1]
它更干净。