在Java中,是否有一种简单的方法可以通过在两侧指定正则表达式定界符而不在最终的子字符串中包含定界符来提取子字符串?
例如,如果我有这样的字符串:
<row><column>Header text</column></row>
提取子字符串的最简单方法是什么:
Header text
请注意,子字符串可能包含换行符…
谢谢!
编写这样的正则表达式:
"(regex1)(.*)(regex2)"
…并从匹配器中拉出中间组(以处理您要使用Pattern.DOTALL的模式中的换行符)。
使用您的示例,我们可以编写如下程序:
package test;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Regex {
public static void main(String[] args) {
Pattern p = Pattern.compile(
"<row><column>(.*)</column></row>",
Pattern.DOTALL
);
Matcher matcher = p.matcher(
"<row><column>Header\n\n\ntext</column></row>"
);
if(matcher.matches()){
System.out.println(matcher.group(1));
}
}
}
运行时会打印出以下内容:
Header
text
我有以下字符串: 如果您将它格式化得很好,您将会看到类似这样的内容: 所以我有一堆锚标签,它们之间有断点。在每个锚的文本中,我想删除管道字符和文件类型: 狗-00.jpg|图像/JPEG 变成 dog-00.jpg 正则表达式也应该适用于所有未来的文件类型,例如: dog-01.docx|应用/vnd.openxmlformats-officedocument.wordprocessingml.d
好的正则表达式问题,如何提取不在两个字符之间的字符,在本例中为括号。 我有一个字符串,例如:word1 |{word2 | word3}| word 4 我只想得到第一个和最后一个“管道”,而不是括号内的第二个。我尝试了无数次负克拉和负分组的尝试,但似乎无法让它发挥作用。 基本上,我在JavaScript拆分函数中使用这个正则表达式将其拆分为一个数组,其中包含:“word1”、“{word2|wo
问题内容: 我需要从字符串中提取两个定界符之间包含的一组字符,而不返回定界符本身。 一个简单的例子应该会有所帮助: 目标:提取方括号之间的子字符串,而不返回括号本身。 基本字串: 如果我使用以下规则。前任。 比赛是。我只需要得到(没有括号)。 有可能做到吗? 问题答案: 简单易行: 从技术上讲,这是使用先行和后备。请参阅前瞻和零宽度断言。该模式包括: 前面有一个[未捕获(向后看); 一个非贪婪的捕
问题内容: 我想使用正则表达式获取所有括号内的所有子字符串。 作为字符串“ foo(bar)foo(baz)golang”的示例,我想要“ bar”和“ baz” 在python中我可以做 怎么做呢? 问题答案: 的软件包不支持零宽度环顾四周。您可以通过以下功能利用捕获的分组: 输出: 正则表达式: 匹配文字 匹配串高达旁边,并把比赛以捕获组,在这里你可以使用非greeedy比赛太 匹配文字 去游
问题内容: 我发现了非常相似的帖子,但是我在这里不能完全得到正则表达式。 我正在尝试编写一个正则表达式,该表达式返回一个位于其他两个字符串之间的字符串。例如:我想获取字符串“ cow”和“ milk”之间的字符串。 我的牛总是喂牛奶 会回来 “总是给” 到目前为止,这是我拼凑的表达方式: 但是,这将返回字符串“牛总是给”。 问题答案: 前瞻(该部分)不消耗任何输入。这是一个 零宽度的断言 (边界检
问题内容: 不幸的是,尽管尽我所能记住,每年尝试至少一年学习一次正则表达式,但我却经常忘记,因为我很少使用它们。今年,我新年的决心是不要再尝试学习正则表达式因此,今年,为了避免让我流泪,我将把它交给Stack Overflow_ 。 我想以这种格式传递一个字符串,然后返回该字符串。有人能协助我们坚持我的新年决议吗? 问题答案: 如果您的字符串将始终是该格式,则正则表达式会显得过大: 表示以一个字符