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

Java正则表达式只匹配逗号而不是括号?

梁丘宏硕
2023-03-14
问题内容

我有一个类似于以下内容的字符串:

12,44,foo,bar,(23,45,200),6

我想创建一个与逗号匹配的正则表达式,但只匹配不在括号内的逗号(在上面的示例中,除23和45之后的两个逗号之外,所有其他逗号)。我将如何做(如果使用Java正则表达式会有所不同)?


问题答案:

假定没有嵌套的括号(否则,你不能使用Java Regex来完成此任务,因为不支持递归匹配):

Pattern regex = Pattern.compile(
    ",         # Match a comma\n" +
    "(?!       # only if it's not followed by...\n" +
    " [^(]*    #   any number of characters except opening parens\n" +
    " \\)      #   followed by a closing parens\n" +
    ")         # End of lookahead", 
    Pattern.COMMENTS);

此正则表达式使用否定的超前断言来确保下一个括号(如果有)不是闭合括号。只有这样,逗号才允许匹配。



 类似资料:
  • 问题内容: 匹配字符串中的’(’的正则表达式是什么? 以下是场景: 我有一串 我想使用正则表达式拆分字符串。为此,我正在使用 但是我收到以下异常。 转义似乎不起作用。 问题答案: 两种选择: 首先,你可以使用转义 回 斜线- 另外,由于它是单个字符,因此您可以将其放入不需要转义的字符类中-

  • 我试图匹配,使用正则表达式,所有逗号(后跟一个空格):在任何括号或方括号之外,即逗号不应该包含在括号或方括号中。 目标字符串是。在这种情况下,它应该匹配第一个逗号和最后一个逗号(介于和之间,和)。 所以我可以拆分分成,and,不会因此而使括号/括号不平衡。 为此,似乎很难单独使用正则表达式。有没有其他办法解决这个问题? 我使用的正则表达式: 但是这个表达式将匹配另外两个不应该匹配的逗号(第二个和第

  • 问题内容: 我有类似的东西 商店 结束行像1商店..我想匹配,它使用python正则表达式。 我尝试了类似的方法, 但是没有用。 编辑:添加代码,我试过 请帮助。 谢谢吉乔 问题答案: 或多或少直接回复您的评论 尝试这个 解决方案是使用,而不是使用后者,因为后者试图将整个字符串与regexp匹配,而前者只是试图在字符串内部查找与表达式匹配的子字符串。

  • 问题内容: 我需要解析一个日志文件并获取时间和相关的函数调用字符串,它以如下方式存储在日志文件中:{“ time”:“ 2012-09-24T03:08:50”,“ message”:“ Call( )开始”} 在其他字符串字符之间将有多个记录的时间函数调用,因此我希望使用正则表达式浏览文件并获取所有这些 我想获取包括大括号在内的整个记录​​的信息 我尝试了以下 和 我不断收到非法的重复错误,请帮

  • 本文向大家介绍Java正则表达式程序以匹配括号“(”或“)”。,包括了Java正则表达式程序以匹配括号“(”或“)”。的使用技巧和注意事项,需要的朋友参考一下 以下正则表达式接受带括号的字符串- ^匹配句子的开头。 。*匹配零个或多个(任何)字符。 [\\(\\)]匹配的括号。 $表示句子的结尾。 例子1 输出1 输出2 例子2 输出1 输出2

  • 我正在尝试匹配以下正则表达式: 换句话说,一个单词边界后跟上面的任何字符串(可选地跟一个句点字符),后面跟一个单词边界。 我也在regex101上尝试过这一操作,但与数仍然不匹配:https://regex101.com/r/klkmwl/1 转义符并没有什么区别,我已经尝试使用十六进制转义序列来代替和符(如本问题所建议的)。为什么这不匹配?