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

如何在Java中使用Regex进行模式匹配?

谭鹏云
2023-03-14
问题内容

我已经在线阅读了文档和各种教程,但是我对regex在Java中的工作方式仍然感到困惑。我正在尝试做的是创建一个接受字符串类型参数的函数。然后,我想检查传递的字符串是否包含MDCLXVIivxlcdm以外的任何字符。因此,例如,字符串“
XMLVID​​”应返回false,而“ ABXMLVA”应返回true。

public boolean checkString(String arg)
{
     Pattern p = Pattern.complile("[a-zA-z]&&[^MDCLXVIivxlcdm]");
     Matcher m = p.matcher(arg);
     if(m.matches())
          return true;
     else
          return false;
 }

当我通过时,“ XMLIVD”,“ ABXMLVA”和“ XMLABCIX”都返回false。我究竟做错了什么?任何帮助将不胜感激。


问题答案:

您将需要在字符类中使用Java的字符类交集运算符,否则它实际上会匹配&&。顺便说一句,您的第一个字符类从A到(小写)z还包括[\]^_,您当然不希望这样;并且您拼写了“
Patter.complile”。

也,
matches()

尝试根据图案匹配 整个 区域。

因此,您需要使用find()代替或用填充表达式.*

public boolean checkString(String arg) {
    return Pattern.compile("[[a-zA-Z]&&[^MDCLXVIivxlcdm]]").matcher(arg).find();
}


 类似资料:
  • 我有一个字符串,我正试图根据几个regex模式验证它,我希望由于模式匹配在3.10中可用,我可以使用它来代替创建if-else块。 考虑一个字符串'validateString',其可能的值1021102,1.25.32string021。 我尝试的代码如下所示。 对于正则表达式1、2和3,我尝试了字符串正则表达式模式,还重新设置了。编译对象,但它似乎不起作用。 我一直试图在互联网上找到这方面的例

  • 或者更好的方法是遍历它,为参数的每个索引获取TRUE或FALSE标志 我只知道如何使用matcher.find()进行循环,如果有任何帮助,我将不胜感激

  • 我想知道为什么这个regex组在Java中不适合我?它在寻找组匹配时抛出异常。我正试着把用破折号隔开的数字匹配起来。

  • 问题内容: 尝试编写使用RegEx验证项目值的JSON模式。 有一个名为 progBinaryName 的项目,该项目的值应预适应此RegEx字符串。 找不到任何实际解释JSON模式中RegEx用法的教程或示例。 任何帮助/信息将不胜感激! 感谢:D JSON架构 错误: 警告!更好地检查您的JSON。 实例不是必需的类型-http://json-schema.org/draft-03/hyper

  • 尝试编写一个JSON模式,该模式使用RegEx来验证项的值。 找不到任何实际解释在JSON模式中使用RegEx的教程或示例。 任何帮助/信息将非常感谢! 谢谢,D 模式是有效的JSON,但不是有效的模式。 验证结果:失败

  • 我正在尝试使用 php 正则表达式解析文本。我写了一个模式匹配,所有东西都符合要求。我不想要它。它必须在同一行上单独匹配目标。 模式: 目标数据字符串: 带有PREG_SET_ORDER标志的结果preg_match_all: 如果目标数据被放置在单独的行和相同的正则表达式模式执行结果;(我想要这些结果,但没有新行) 谢谢你的帮助。