首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我在Pattern.compile()和.matcher()中传递变量,但没有获得所需的输出

在Java中,Pattern.compile()和.matcher()是正则表达式的相关方法。Pattern.compile()用于编译正则表达式模式,而.matcher()用于在给定的输入字符串中查找匹配该模式的子序列。

如果你在Pattern.compile()和.matcher()中传递变量但没有获得所需的输出,可能有以下几个原因:

  1. 正则表达式模式错误:请确保你传递给Pattern.compile()的正则表达式模式是正确的。正则表达式模式应该符合语法规则,并且能够正确匹配你想要的字符串。你可以参考Java正则表达式的语法规则和常见模式。
  2. 变量传递错误:请确保你正确地将变量传递给.matcher()方法。检查变量的类型和值是否与你期望的一致。如果你传递的是字符串变量,确保它包含了你想要在输入字符串中匹配的内容。
  3. 匹配方法调用错误:请确保你正确地调用了匹配方法,如.matches()、.find()等。根据你的需求选择合适的匹配方法,并确保在调用时传递了正确的参数。

如果你仍然无法获得所需的输出,可以考虑以下几个步骤来进一步排查问题:

  1. 检查输入字符串:确保你传递给.matcher()方法的输入字符串是正确的,并且包含了你期望匹配的内容。
  2. 调试输出:在调用.matcher()方法之前,可以使用System.out.println()或日志记录工具打印出你传递给Pattern.compile()和.matcher()的变量值,以及匹配方法的返回结果。这样可以帮助你确定问题出现的具体位置。
  3. 检查异常:如果你在编译或匹配过程中遇到了异常,可以查看异常的详细信息,以了解问题的具体原因。根据异常信息,你可以进一步调整代码或查找解决方案。

总结起来,要解决在Pattern.compile()和.matcher()中传递变量但没有获得所需输出的问题,你需要确保正则表达式模式、变量传递和匹配方法调用的正确性,并进行适当的调试和异常处理。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

滚雪球学Java(21):Java正则表达式

在 Java 中,正则表达式是由 java.util.regex 包提供支持的。 本文将介绍 Java 中的正则表达式,并演示如何使用 Java 正则表达式。...正则表达式由普通字符和元字符组成。 普通字符 普通字符是没有特殊意义的字符。例如,字符串 "hello" 匹配正则表达式 "hello"。 元字符 元字符是具有特殊意义的字符。...Java 中的 Pattern 类表示一个正则表达式。要创建一个 Pattern 对象,只需调用 Pattern.compile() 方法并传递正则表达式字符串作为参数即可。...正则表达式是一种强大的工具,可以用于在字符串中进行模式匹配和查找。掌握正则表达式可以帮助程序员更高效地处理字符串。...☀️建议/推荐你   无论你是计算机专业的学生,还是对编程有兴趣的小伙伴,都建议直接毫无顾忌的学习此专栏「滚雪球学Java」,bug菌郑重承诺,凡是学习此专栏的同学,均能获取到所需的知识和技能,全网最快速入门

9622

Java正则速成秘籍(一)之招式篇

后来,我多接触一些正则的应用实例,渐渐有了感觉,再结合语义说明,终有领悟。我觉得正则表达式和武侠修练武功差不多,应该先练招式,再练心法。如果一开始就直接看正则的规则,保证你会懵逼。...与Pattern类一样,Matcher类也没有公共构造方法。你需要调用Pattern对象的matcher方法来获得一个Matcher对象。...案例:Pattern和Matcher的初始化 Pattern p = Pattern.compile(regex); Matcher m = p.matcher(content); Matcher类 Matcher...这个方法返回一个字符串,就像传递给Matcher类的appendReplacement 方法一个字面字符串一样工作。...说明 从输出结果可以看出,appendReplacement和appendTail方法组合起来用,功能和replaceAll是一样的。

1.1K80
  • 怎么在Java 16中编写C风格的局部静态变量

    我们可以用它来模仿C风格的局部静态变量,即局部变量:只初始化一次(而且是懒惰地初始化)在一个方法的多个执行过程中共享这听起来是一个相当棘手的功能,即只在本地可见的全局变量。...但事实上,这是我长期以来一直想要的东西,特别是当我想在不污染类命名空间的情况下缓存正则表达式模式时。...(string).find()); }}这又一次打印出了所需的、最佳的输出:scss 代码解读复制代码compile(a)check(a): truecheck(b): false使用var 来使用一个不可取消的类型...(其成员我们可以取消引用),再加上将静态成员放在内类中的能力,有效地模拟了局部静态变量,就像在C语言中一样。...你仍然在创建一个额外的类和一个无用的对象,希望逃逸分析能阻止它的分配,所以这并不是一个非常干净的解决方案,但很高兴知道现在可以这样做了。

    8810

    Java正则速成秘籍(一)之招式篇

    后来,我多接触一些正则的应用实例,渐渐有了感觉,再结合语义说明,终有领悟。我觉得正则表达式和武侠修练武功差不多,应该先练招式,再练心法。如果一开始就直接看正则的规则,保证你会懵逼。...与Pattern类一样,Matcher类也没有公共构造方法。你需要调用Pattern对象的matcher方法来获得一个Matcher对象。...案例:Pattern和Matcher的初始化 Pattern p = Pattern.compile(regex); Matcher m = p.matcher(content); 回到顶部 Matcher...这个方法返回一个字符串,就像传递给Matcher类的appendReplacement 方法一个字面字符串一样工作。...说明 从输出结果可以看出,appendReplacement和appendTail方法组合起来用,功能和replaceAll是一样的。

    96450

    尚学堂-马士兵-专题-正则表达式

    在正则表达式中, \s本身代表的是空白字符. 由于\有特殊的含义, * 所以, 在写\s的时候, 需要写成\\s....* 因此在java中,想要表示\,需要使用\\ * * 在正则表达式中, \有特殊的含义, 比如\s \d \w. 因此表示\需要使用\\....下面来看案例 案例一: 一个简单的小例子: 使用分组打印匹配成功的字符串 输出结果: 我们看到, 如预期的, 有三组满足条件. 那么, 如果我想要得到三组中每一组的数字,怎么办呢?...632ee 获取第一组---全部是数字的组 45896 758 632 获取第二组---全部是字母的组 aa dd ee /* * 案例二: 获得上一个案例中每一组的数字...匹配的是0个或者1个字符. 当?在一个组中作为开头的时候, 表示的是非捕获组 * * 来看看下面你的demo */ Pattern p2 = Pattern.compile(".{3}(?

    1.2K20

    面试官:你竟然连这么简单的正则表达式都不会写?

    断言:俗话的断言就是“我断定什么什么”,而正则中的断言,就是说正则可以指明在指定的内容的前面或后面会出现满足指定规则的内容,意思正则也可以像人类那样断定什么什么,比如"ss1aa2bb3",正则可以用断言找出...零宽:就是没有宽度,在正则中,断言只是匹配位置,不占字符,也就是说,匹配结果里是不会返回断言本身。 意思是讲明白了,那他有什么用呢? 我们来举个栗子:假设我们要用爬虫抓取csdn里的文章阅读量。...,需要获得这里边的‘641’有很多种办法,但如果正则应该怎么匹配呢?...在举个替换的例子,假如想要把字符串中abc换成a。...在正则中,贪婪也是差不多的意思: 贪婪匹配:当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符,这匹配方式叫做贪婪匹配。

    87830

    postman发起post请求遇到报错:java.io.FileNotFoundException (文件名、目录名或卷标语法不正确。)

    后来我开始怀疑传递过去的字符串有问题,于是在后端打印传递过来的路径,更离谱的事情发生了:打印的路径和我想要传递的路径完全一致,也就是"E:\code\clustering.txt",一个多余的斜杠或者其他文字符号都没有...那就只能是在传值和读取值的时候出错,可是我通过System.out.println(pythonScriptPath);打印出来的地址就是实际地址。那是哪里的问题呢?...说实话我很难怀疑就是postman的问题,因为postman传值是有错误检查的,我最开始复制地址进去就提醒我没加转义符号: 但没办法,再难以置信也只能是这里有问题。...原来postman在传递字符串的时候会自动转义,不但将我之前的转义符号又转义了一遍,甚至连双引号都转义了一遍。...而在java中打印字符串时,将数值中本身携带的双引号隐藏了,但实际访问路径时,又因为双引号的问题导致访问不到,于是修改postman的传值: 问题解决,说实话这里很抽象,因为正确的传法postman

    8600

    不会正则表达式?看这篇就够了!

    断言:俗话的断言就是“我断定什么什么”,而正则中的断言,就是说正则可以指明在指定的内容的前面或后面会出现满足指定规则的内容,意思正则也可以像人类那样断定什么什么,比如"ss1aa2bb3",正则可以用断言找出...零宽:就是没有宽度,在正则中,断言只是匹配位置,不占字符,也就是说,匹配结果里是不会返回断言本身。 意思是讲明白了,那他有什么用呢? 我们来举个栗子:假设我们要用爬虫抓取csdn里的文章阅读量。...,需要获得这里边的‘641’有很多种办法,但如果正则应该怎么匹配呢?...在举个替换的例子,假如想要把字符串中abc换成a。...在正则中,贪婪也是差不多的意思: 贪婪匹配:当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符,这匹配方式叫做贪婪匹配。

    88920

    正则表达式真的很骚,可惜你不会写!

    断言:俗话的断言就是“我断定什么什么”,而正则中的断言,就是说正则可以指明在指定的内容的前面或后面会出现满足指定规则的内容, 意思正则也可以像人类那样断定什么什么,比如"ss1aa2bb3",正则可以用断言找出...零宽:就是没有宽度,在正则中,断言只是匹配位置,不占字符,也就是说,匹配结果里是不会返回断言本身。 意思是讲明白了,那他有什么用呢? 我们来举个栗子: 假设我们要用爬虫抓取csdn里的文章阅读量。...,需要获得这里边的‘641’有很多种办法,但如果正则应该怎么匹配呢?...捕获和非捕获 单纯说到捕获,他的意思是匹配表达式,但捕获通常和分组联系在一起,也就是“捕获组” 捕获组:匹配子表达式的内容,把匹配结果保存到内存中中数字编号或显示命名的组里,以深度优先进行编号,之后可以通过序号或名称来使用这些匹配结果...,其实学会它的一些语法和知识点还算不太难,但想要做到真正学以致用能写出非常6的正则,还有很远的距离,只有真正对它感兴趣的,并且经常研究和使用它,才会渐渐的理解它的博大精深之处,我就带你们走到这,剩下的,

    50300

    JAVA自动爬取CSDN用户数据并文章点赞

    题外话到此为止,先说说怎么获得csdn的用户名的,他的方法是通过用户的粉丝和关注两个列表,最多可以获得12个用户名,再根据这12个用户名,继续进入每个用户的主页,获得该用户的粉丝和关注列表的用户数据,这样无限循环往复...return fanses; } 这里只拉30个用户的数据,我也没有想好怎么截止这个任务。...附上自己写的httpUtil和StreamUtil的访问网页的方法并输出string的方法。...大致思路是这样的,打开https://me.csdn.net/用户名博客主页,解析文章列表便可获得文章id。跟踪登陆API,查看请求参数和响应中的cook的插入,解析出token。...1.进入该用户的默认博客列表页面 这里通过https://blog.csdn.net/用户名/article/list/1进入博客列表 2.通过正则匹配获得第一篇文章链接中的ArticleId和userName

    85830

    Java正则表达式

    ,学过python的都知道这个和python的正则表达式有异曲同工之妙。...Pattern pattern = Pattern.compile("\\d+"); String str = "我是陈加兵456郑元梅34擦市场的逻辑啊"; String[] splits =...Pattern.compile("\\d+"); String str = "我是陈加兵456郑元梅34擦市场的逻辑啊"; String[] splits = pattern.split(str, 2)...例如,在表达式 ((A)(B(C)))中,存在四个这样的组: ((A)(B(C))) (A) (B(C)) (C) 总之在正则表达式中在括号中的就是一个分组,下面用一个实例来理解一下...贪婪与非贪婪模式影响的是被量词修饰的子表达式的匹配行为,贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配,而非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配 一般写python爬虫的时候使用的都是非贪婪模式来匹配

    97520

    优秀攻城师必知的正则表达式语法

    正则表达式是用来处理文本字符串的神器没有之一,如果没有正则表达式,处理一些数据校验和提取,替换工作会变得非常麻烦,例如:验证邮箱是否合法,提取网址,校验日期,校验电话号码,模糊搜索等等。...使用正则表达式来匹配文本,主要有两种直观的反馈结果: (1)回答我true/false,用来表达是否满足匹配条件 (2)除了回答我true/false外,还要告诉我每一响匹配数据是什么,以及在文本中的起始位置...当第一个满足的数据找到之后,程序仍然会继续在剩下部分中再次执行,直到遍历结束,所以这个过程是有可能匹配到多条数据的,如上面的输出就找到了两条符合的数据。...占有模式: (1) 模式: \d++@ 输出: 12345@ 67890@ (2) 模式: \d++3 输出:无匹配结果 (3) 模式: \d+3 输出: 123 为了说明问题,我上面举了3个例子,其中...这个功能也是非常实用的,在正则表达式里面,默认的匹配规则都是隐式的AND,比如我随便写一个匹配模式cat,那么就必须cat才行,如果我想匹配cat或者dog应该怎么表示呢?

    1.3K30

    http编程系列(二)——java爬虫实现刷个人博客的访问量

    这里我发现一个问题,csdn既没有做接口ip访问量的限制,访问量统计时也没有做同一ip相同时间段的重复访问重复计数的处理。这也时这个程序能够刷访问量的原因。...这里工作就分为以下几步 1.根据个人主页url,访问个人主页并拿到页面数据 2.找出下一页的URL并访问,重复该动作直到没有下一页,将每个url都存到set集合中 3.遍历set集合,访问所有的博客列表页面...,为了重复使用,我将其放入工具类中。...2.找出下一页的URL并访问,重复该动作直到没有下一页,将每个url都存到set集合中 开启f12,我们来看下一页是怎么样的。 ?...} } } 3.遍历set集合,访问所有的博客列表页面,获得页面数据,找到页面数据中所有的博客链接,存入博客链接的set集合 我们先看看再blog列表页面中的blog链接 ?

    53330

    java正则表达式http_Java 正则表达式(精华)

    大家好,又见面了,我是你们的朋友全栈君。...上面代码中的标志使模式匹配是忽略大小写 Pattern.matcher() 一旦获得了Pattern对象,接着可以获得Matcher对象。...如果在文本中多次匹配,find() 方法返回第一个,之后每次调用 find() 都会返回下一个。 start() 和 end() 返回每次匹配的字串在整个文本中的开始和结束位置。...输出中的换行和缩进是为了可读而增加的。 注意第1个字符串中所有出现 John 后跟一个单词 的地方,都被替换为 Joe Blocks 。第2个字符串中,只有第一个出现的被替换。...这个表达式在输入文本中没有匹配项,尽管文本中包括 John 和 hurt. 为什么会这样? 因为 .*+ 是独占模式。与贪婪模式下,尽可能多的匹配文本,以使整个表达式匹配不同。

    1.5K10

    springboot经验之sql注入、xss注入拦截(POST)

    这里我就不做的的介绍了,解决sql注入根本方案在于使用预编译而不是拼接sql, 而通常拦截参数都只有针对GET方法,下面介绍下POST方法 POST防注入方案 1、增加httprequest包装类 import...= StreamUtils.copyToByteArray(request.getInputStream()); } // 重写几个HttpServletRequestWrapper中的方法... * 如果需要获得原始的值,则通过super.getParameterValues(name)来获取 * getParameterNames,getParameterValues...,如:checkbox的所有数据 接收数组变量 ,如checkobx类型 */ @Override public String[] getParameterValues(String... * 如果需要获得原始的值,则通过super.getHeaders(name)来获取 * getHeaderNames 也可能需要覆盖 */ @Override

    4.6K21

    Java正则表达式详解

    上面代码中的标志使模式匹配是忽略大小写 Pattern.matcher() 一旦获得了Pattern对象,接着可以获得Matcher对象。...如果在文本中多次匹配,find() 方法返回第一个,之后每次调用 find() 都会返回下一个。 start() 和 end() 返回每次匹配的字串在整个文本中的开始和结束位置。...输出中的换行和缩进是为了可读而增加的。 注意第1个字符串中所有出现 John 后跟一个单词 的地方,都被替换为 Joe Blocks 。第2个字符串中,只有第一个出现的被替换。...本篇文字,我们将通过例子了解正则表达式语法的基础部分。介绍重点将会放在为了使用正则表达式所需要了解的核心概念,不会涉及过多的细节。详细解释,参见 Java DOC 中的 Pattern 类....这个表达式在输入文本中没有匹配项,尽管文本中包括 John 和 hurt. 为什么会这样? 因为 .*+ 是独占模式。与贪婪模式下,尽可能多的匹配文本,以使整个表达式匹配不同。

    2.5K00

    (89) 正则表达式 (中) 计算机程序的思维逻辑

    在Java中,没有什么特殊的语法能直接表示正则表达式,需要用字符串表示,而在字符串中,'\'也是一个元字符,为了在字符串中表示正则表达式的'\',就需要使用两个'\',即'\\',而要匹配'\'本身,就需要四个...,尾部的空白字符串不会包含在返回的结果数组中,但头部和中间的空白字符串会被包含在内,比如: String str = ",abc,,def,,"; String[] fields = str.split...(str.replaceAll(regex, " ")); 输出为: hello world good 在replaceAll和replaceFirst中,参数replacement也不是被看做普通的字符串...(regex).matcher(this).replaceAll(replacement); } 边查找边替换 replaceAll和replaceFirst都定义在Matcher中,除了一次性的替换操作外...变量的实际值通过Map提供,变量名称对应Map中的键,模板引擎的任务就是接受模板和Map作为参数,返回替换变量后的字符串,示例实现为: private static Pattern templatePattern

    1.1K70
    领券