当前位置: 首页 > 知识库问答 >
问题:

需要一个正则表达式来提取两个“分隔”字符串之间的字符串[重复]

公冶泰
2023-03-14

我需要把绳子接上
到目前为止,我有这个,但不知道如何截断实际的“字符串分隔符”:

输入示例:
1月26日wesasegeaazedude的文件。jpg
当前匹配:
由_wesasegeaazedude_在
需要匹配:
wesasegeaazedude


共有3个答案

翁翰墨
2023-03-14

你可以简单地使用正面观察:

String regex = "(?<=by_).*(?=_on)";  

这个正则表达式的作用是:

  1. 匹配任何内容:。*
  2. 前面是by_(?

东方海
2023-03-14

如果没有正则表达式,我会这样做。

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);
方高丽
2023-03-14

你的表达很好*,你只需要提取第一个捕获组的内容:

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_(. *?) _

 类似资料:
  • 问题内容: 我发现了非常相似的帖子,但是我在这里不能完全得到正则表达式。 我正在尝试编写一个正则表达式,该表达式返回一个位于其他两个字符串之间的字符串。例如:我想获取字符串“ cow”和“ milk”之间的字符串。 我的牛总是喂牛奶 会回来 “总是给” 到目前为止,这是我拼凑的表达方式: 但是,这将返回字符串“牛总是给”。 问题答案: 前瞻(该部分)不消耗任何输入。这是一个 零宽度的断言 (边界检

  • 好的正则表达式问题,如何提取不在两个字符之间的字符,在本例中为括号。 我有一个字符串,例如:word1 |{word2 | word3}| word 4 我只想得到第一个和最后一个“管道”,而不是括号内的第二个。我尝试了无数次负克拉和负分组的尝试,但似乎无法让它发挥作用。 基本上,我在JavaScript拆分函数中使用这个正则表达式将其拆分为一个数组,其中包含:“word1”、“{word2|wo

  • 我尝试借助< code > nodejs < code > fs . read file sync()函数将文件内容提取到字符串中,如下所示: 在此之后,我想通过获取两个字符串之间的内容: 我有一个类似这样的字符串: 我需要在

  • 本文向大家介绍利用正则表达式提取固定字符之间的字符串,包括了利用正则表达式提取固定字符之间的字符串的使用技巧和注意事项,需要的朋友参考一下 前言 在JS的正则零宽断言匹配中,只支持前瞻匹配,不支持后瞻。这就尴尬了,因为在业务当中,我们大多时候是知道了要目标数据的前后缀字符串,但是并不想连同前后缀一起获取。 为了模拟后瞻,我想,要不就用笨方法,先将前后缀字符串一同提取,然后再讲前后缀字符串一同rep

  • 问题内容: 我尝试获取<%=和%>之间的字符串,这是我的实现: 它返回 但我的期望是: 我在哪里错了以及如何纠正它? 问题答案: 您的模式很好。但是,您不应该轻信它,应该这样做。以下代码提供了您正在寻找的输出: