当前位置: 首页 > 面试题库 >

Java正则表达式-拆分但忽略引号内的文本?

堵雅健
2023-03-14
问题内容

仅使用正则表达式方法,方法String.replaceAll和ArrayList如何将字符串拆分为标记,但忽略引号内存在的定界符?分隔符是非字母数字或带引号的文本的任何字符

例如:字符串:

你好^世界’这*有两个令牌’

应该输出:

  • 你好
  • worldthis *有两个令牌


问题答案:

使用a
Matcher来标识要保留的部分,而不是要拆分的部分:

String s = "hello^world'this*has two tokens'";
Pattern pattern = Pattern.compile("([a-zA-Z0-9]+|'[^']*')+");
Matcher matcher = pattern.matcher(s);
while (matcher.find()) {
    System.out.println(matcher.group(0));
}

看到它在线上工作:ideone



 类似资料:
  • 问题内容: 我的文字如下: 谁能告诉我我必须使用哪些正则表达式分度数才能获得以下结果: 我在这里阅读Sun教程,直到“ Matcher类的方法”为止,但我仍然茫然。谢谢! 如果是这样,那将很容易,但是不幸的是,事实并非如此。有任何想法吗? 问题答案: 您可以直接使用split()方法,如下所示: (请注意,这将返回长度为5的数组,第一个位置为空字符串) 或者,如果您想使用模式/匹配器,可以这样做:

  • 我收到了很多文件,其中我的控制为零,我需要根据分隔符进行拆分。但是当分隔符在引号内时,我不想拆分。因此,列 1、列 2、列 3 是 然而,column1、“column2”、column3是 这可以使用此正则表达式(在 C# 下) 现在,我的问题是当有一行只有一个双引号(仅打开或关闭)时,例如第1列,第2列",第3列返回 虽然它应该返回 我发现很多与正则表达式相关的,但在上面的特定示例中,它们都失

  • 问题内容: 在发布此内容之前,我仔细阅读了相关问题,并且无法修改任何相关答案以使用我的方法(不擅长使用正则表达式)。 基本上,这是我现有的行: 它们都匹配和之间包含的字符串。我需要正则表达式忽略它们之间包含的转义引号。因此,之间的数据将被忽略,而之间的数据将被忽略。 任何帮助将不胜感激。 问题答案: 对于大多数字符串,您需要允许转义 任何内容 (而不仅仅是转义引号)。例如,你很可能需要允许转义字符

  • 我想将“word1和word2或(word3和(word4或word5))和word6”等字符串与“和”分开,以便从括号外获得:“word1”“word2或(word3和(word4或word5))”“word6” 请注意,括号组可以包含许多其他括号组。 我做了一些研究,我发现了一个正则表达式,它与我想要的相反:这个正则表达式选择括号之外的“AND”以外的所有内容。我还尝试了前瞻和后视,但没有成功

  • 问题内容: 在我的一个项目中,我不得不处理逗号分隔文件(CSV)。我必须基于逗号来拆分数据,而忽略引号内的逗号(即),因此我使用了另一个堆栈溢出问题(Java:拆分逗号分隔的字符串但忽略了引号中的逗号)中提到的表达式。一切工作都很好,直到最近我才注意到它不适用于下面提到的一种特定情况。 我需要在逗号上拆分的数据字符串为: 以我的理解为基础 拆分后的数据应返回一个大小为10的数组,该数组的后两个索引

  • 我正在尝试匹配这些字符串: 单引号中不能包含双引号 双引号中没有双引号 单引号内的单引号-单引号只能包含内部的文本 我想出了以下正则表达式: 但它不起作用。