我需要在 by _ 和 _on 之间输入字符串。
到目前为止,我有这个,但不明白如何截断实际的"字符串分隔符":
by_(.*)_on
示例输入:
Files_by_wesasegeaazedude_on_January_26.jpg
当前比赛:
by_wesasegeaazedude_on
需要匹配:
wesasegeaazedude
答案 0 :(得分:1)
您只需使用正面外观:
String regex = "(?<=by_).*(?=_on)";
这个正则表达式的作用是:
.*
by_
:(?<=by_)
_on
:(?=_on)
答案 1 :(得分:1)
你的表达很好 * 。您需要做的就是提取第一个捕获组的内容:
Pattern regex = Pattern.compile("by_(.*)_on");
String str = "Files_by_wesasegeaazedude_on_January_26.jpg";
Matcher m = regex.matcher(str);
if (m.find()) {
String res = m.group(1);
}
* 好吧,差不多好。如果您希望在同一行上输入多个文件名,您可能需要考虑使用不情愿的限定符,即by_(.*?)_on
答案 2 :(得分:1)
如果没有正则表达式,我会这样做。
int start = str.indexOf("by_");
int end = str.indexOf("_on", start + 1); // or lastIndexOf("_on"), for greedy match.
assert start > 0 && end > start;
String part = str.substring(start + 3, end);