Java 正则表达式抛出 java.util.regex.PatternSyntaxException:字母 g 的转义序列非法/不受支持

2023-12-12

我需要查看字符串中是否存在整个单词。这就是我尝试这样做的方式:

if(text.matches(".*\\" + word + "\\b.*"))
    // do something

它适用于大多数单词,但以 a 开头的单词g导致错误:

Exception in thread "main" java.util.regex.PatternSyntaxException:
Illegal/unsupported escape sequence near index 3 
.*\great life\b.*
   ^

我怎样才能解决这个问题?


错误的实际原因是您无法转义 Java 正则表达式模式中的字母字符,而该模式不形成有效的转义构造。

See Java 正则表达式文档:

在任何不表示转义结构的字母字符之前使用反斜杠是错误的;这些是为将来的正则表达式语言扩展而保留的。反斜杠可以用在非字母字符之前,无论该字符是否是未转义结构的一部分。

I'd use

Matcher m = Pattern.compile("\\b" + word + "\\b").matcher(text);
if (m.find()) {
    // A match is found
}

如果一个单词可能包含/开始/结束特殊字符,我会使用

Matcher m = Pattern.compile("(?!\\B\\w)" + Pattern.quote(word) + "(?<!\\w\\B)").matcher(text);
if (m.find()) {
    // A match is found
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 正则表达式抛出 java.util.regex.PatternSyntaxException:字母 g 的转义序列非法/不受支持 的相关文章

  • 如何找到给定字符串的最长重复子串

    我是java新手 我被分配寻找字符串的最长子字符串 我在网上研究 似乎解决这个问题的好方法是实现后缀树 请告诉我如何做到这一点或者您是否有任何其他解决方案 请记住 这应该是在 Java 知识水平较低的情况下完成的 提前致谢 附 测试仪字符串
  • Spark 1.3.1 上的 Apache Phoenix(4.3.1 和 4.4.0-HBase-0.98)ClassNotFoundException

    我正在尝试通过 Spark 连接到 Phoenix 并且在通过 JDBC 驱动程序打开连接时不断收到以下异常 为简洁起见 下面是完整的堆栈跟踪 Caused by java lang ClassNotFoundException org a
  • 控制Android的前置LED灯

    我试图在用户按下某个按钮时在前面的 LED 上实现 1 秒红色闪烁 但我很难找到有关如何访问和使用前置 LED 的文档 教程甚至代码示例 我的意思是位于 自拍 相机和触摸屏附近的 LED 我已经看到了使用手电筒和相机类 已弃用 的示例 但我
  • 反射找不到对象子类型

    我试图通过使用反射来获取包中的所有类 当我使用具体类的代码 本例中为 A 时 它可以工作并打印子类信息 B 扩展 A 因此它打印 B 信息 但是当我将它与对象类一起使用时 它不起作用 我该如何修复它 这段代码的工作原理 Reflection
  • JavaMail 只获取新邮件

    我想知道是否有一种方法可以在javamail中只获取新消息 例如 在初始加载时 获取收件箱中的所有消息并存储它们 然后 每当应用程序再次加载时 仅获取新消息 而不是再次重新加载它们 javamail 可以做到这一点吗 它是如何工作的 一些背
  • 在 SQLite 中搜索时排除 HTML 标签和一些 UNICODE 字符

    更新 4 我已经成功运行了firstchar例如 但现在的问题是使用regex 即使包含头文件 它也无法识别regex操作员 有什么线索可以解决这个问题吗 更新 2 我已经编译了sqlite3我的项目中的库 我现在正在寻找任何人帮助我为我的
  • 禁止的软件包名称:java

    我尝试从数据库名称为 jaane 用户名 Hello 和密码 hello 获取数据 错误 java lang SecurityException Prohibited package name java at java lang Class
  • Java按日期升序对列表对象进行排序[重复]

    这个问题在这里已经有答案了 我想按一个参数对对象列表进行排序 其日期格式为 YYYY MM DD HH mm 按升序排列 我找不到正确的解决方案 在 python 中使用 lambda 很容易对其进行排序 但在 Java 中我遇到了问题 f
  • 在两个活动之间传输数据[重复]

    这个问题在这里已经有答案了 我正在尝试在两个不同的活动之间发送和接收数据 我在这个网站上看到了一些其他问题 但没有任何问题涉及保留头等舱的状态 例如 如果我想从 A 类发送一个整数 X 到 B 类 然后对整数 X 进行一些操作 然后将其发送
  • 总是使用 Final?

    我读过 将某些东西做成最终的 然后在循环中使用它会带来更好的性能 但这对一切都有好处吗 我有很多地方没有循环 但我将 Final 添加到局部变量中 它会使速度变慢还是仍然很好 还有一些地方我有一个全局变量final 例如android Pa
  • Java Integer CompareTo() - 为什么使用比较与减法?

    我发现java lang Integer实施compareTo方法如下 public int compareTo Integer anotherInteger int thisVal this value int anotherVal an
  • 如何在控制器、服务和存储库模式中使用 DTO

    我正在遵循控制器 服务和存储库模式 我只是想知道 DTO 在哪里出现 控制器应该只接收 DTO 吗 我的理解是您不希望外界了解底层域模型 从领域模型到 DTO 的转换应该发生在控制器层还是服务层 在今天使用 Spring MVC 和交互式
  • AWS 无法从 START_OBJECT 中反序列化 java.lang.String 实例

    我创建了一个 Lambda 函数 我想在 API 网关的帮助下通过 URL 访问它 我已经把一切都设置好了 我还创建了一个application jsonAPI Gateway 中的正文映射模板如下所示 input input params
  • 使用 php/regex 验证美国电话号码

    EDIT 我混合并修改了下面给出的两个答案 以形成完整的功能 现在它可以完成我想要的功能 然后是一些 所以我想我会将其发布在这里 以防其他人来寻找同样的东西 Function to analyze string against many p
  • 玩!框架:运行“h2-browser”可以运行,但网页不可用

    当我运行命令时activator h2 browser它会使用以下 url 打开浏览器 192 168 1 17 8082 但我得到 使用 Chrome 此网页无法使用 奇怪的是它以前确实有效 从那时起我唯一改变的是JAVA OPTS以启用
  • Firebase 添加新节点

    如何将这些节点放入用户节点中 并创建另一个节点来存储帖子 我的数据库参考 databaseReference child user getUid setValue userInformations 您需要使用以下代码 databaseRef
  • java.lang.IllegalStateException:驱动程序可执行文件的路径必须由 webdriver.chrome.driver 系统属性设置 - Similiar 不回答

    尝试学习 Selenium 我打开了类似的问题 但似乎没有任何帮助 我的代码 package seleniumPractice import org openqa selenium WebDriver import org openqa s
  • 将 List 转换为 JSON

    Hi guys 有人可以帮助我 如何将我的 HQL 查询结果转换为带有对象列表的 JSON 并通过休息服务获取它 这是我的服务方法 它返回查询结果列表 Override public List
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两
  • Spring Boot @ConfigurationProperties 不从环境中检索属性

    我正在使用 Spring Boot 1 2 1 并尝试创建一个 ConfigurationProperties带有验证的bean 如下所示 package com sampleapp import java net URL import j

随机推荐

  • Realitykit 功能在 ios 13.4.1 上崩溃,但在 15.2 上运行

    我有一个部署目标为 10 的项目 其 Realitykit 功能仅出现在 ios 13 设备上 问题是它在 ios 15 2 的真实设备中成功运行 但在 ios 13 4 1 中崩溃并出现错误 实例化缺少弱链接祖先的类的类元数据 avail
  • jOOQ“EXTRACT(EPOCH FROM [field])”解决方法?

    有一种语法允许将时间戳转换为各种日期部分 包括 unix 纪元 其工作原理如下 至少在最新的 PostgreSQL 中 SELECT EXTRACT EPOCH FROM ts FROM 然而 jOOQ 似乎不支持这种语法 如下所示这次讨论
  • hunchentoot 使用 ssl 定义-easy-handler?

    我一直使用define easy handler 我现在有一个新创建的 ssl 证书和关联的 pem 文件 但无法弄清楚 d e h 的 ssl 等效项是什么 例如 我有 hunchentoot define easy handler lo
  • C 中的免费二维数组

    当我遇到以下示例时 我正在解决一些简单的指针练习 void deallocate2D int array int nrows deallocate each row int i for i 0 i lt nrows i free array
  • 与可为空值的 SQL 相等/不相等比较

    首先采取 拼凑解决方案 哨兵方法 您的程序必须不允许输入哨兵值 select coalesce a 2147483648 coalesce b 2147483648 as is equal a little postgresism 假设您忘
  • 随机生成弯曲/波浪路径

    我有一张比视口大得多并且位于视口中心的巨大地图图像 用户可以通过拖动屏幕来浏览该图像 为了创造视差效果 我在前景中使用了巨大的云图像 当用户通过拖动探索地图时 背景和前景都会以视差方式移动 到目前为止 一切都很好 然而 我真正想做的是给云的
  • PHP递归删除函数

    我编写了用于文件夹删除的递归 PHP 函数 我想知道如何修改此函数以删除虚拟主机中的所有文件和文件夹 不包括给定的文件和文件夹名称数组 例如 cgi bin htaccess BTW 使用此函数完全删除像这样的目录调用 recursive
  • 如何在没有 Outlook 的情况下通过 VBA 发送电子邮件

    我尝试在 VBA 中通过 SMTP 发送电子邮件 但返回错误 Dim CDOmsg As CDO Message Set CDOmsg New CDO Message With CDOmsg Configuration Fields Ite
  • 我可以在“with”之外运行剧作家吗?

    我怎样才能跑 browser sync playwright chromium launch 根据文档 playwrite 必须与 with 一起运行 with sync playwrith as p 是什么导致我的浏览器在 with 结束
  • 如何同步 PL/SQL 调用的 java 方法

    我只是有一个与并发相关的问题 其逻辑流程是当客户端 称为Oracle Forms 提交请求 称为并发程序 并调用plsql过程时 该过程最终将调用java静态方法 我发现 当我同时或在很短的时间间隔 例如1秒 内提交两个请求时 会注意到一些
  • 我如何从android中的广播接收器访问数据库?

    我正在开发一个警报应用程序BroadcastReceiver 这里我需要从数据库检查警报是否打开或关闭 所以我需要在广播事件到来时检查警报的状态 我必须将数据库访问代码放入BroadcastReceiver class onReceive
  • 以编程方式自动布局不起作用

    我想以编程方式将 UIImageView 添加到视图中 并添加约束以使其垂直和水平居中 使用故事板 它可以工作 但不能以编程方式工作 class ViewController UIViewController override func v
  • Mysqli 和在插入期间绑定多个值集[重复]

    这个问题在这里已经有答案了 希望有人可以在这里给我一些见解 当必须一次将多行插入表中时 我使用了如下所示的 sql INSERT INTO some names firstName lastName VALUES Joe Smith Fre
  • mysql按类ajax更新表

    我正在尝试使用 ajax 按类而不是 id 更新行数量 我在谷歌上搜索了几个小时试图解决这个问题 但我能找到的所有东西似乎都不起作用 到目前为止我的代码是 include config php id GET id sql2 SELECT F
  • geom_bar 中的条形宽度不相等

    对于以下数据框 我想使用以下方法绘制几个条形图ggplot df lt data frame Disease c Disease1 Disease2 Disease3 Disease3 Disease3 Disease4 Disease5
  • 使用 Freebase API 时如何从 mqlread() 获取光标?

    我正在使用 Python Freebase 模块MQLREAD 使用以下查询 query cursor True id None type games game mid None 返回 100 个条目 但结果不包括 光标 如果您手动运行查询
  • 在函数参数中用更具体的类型替换“unknown”时出错

    在我正在处理的代码库中 拥有一个包含具有类型参数的函数的通用类型是有意义的unknown 然后 无论何时使用该类型 都将函数的参数类型缩小为更具体的类型 但是 这会引发如下错误 Type unknown is not assignable
  • 一页有多个 Google Analytics 4 脚本跟踪器

    Briefly 主要想法是我有一个集成了 Google Analytics 4 GA4 的网站和一个集成到该网站中的独立小部件 该网站也具有 GA4 结果 事件被发送到两个跟踪器 我如何才能将其彼此隔离 详细的 有 2 个 React We
  • 将输入文本值作为参数传递

    我想将用户输入作为参数传递到另一个页面 这是我的代码
  • Java 正则表达式抛出 java.util.regex.PatternSyntaxException:字母 g 的转义序列非法/不受支持

    我需要查看字符串中是否存在整个单词 这就是我尝试这样做的方式 if text matches word b do something 它适用于大多数单词 但以 a 开头的单词g导致错误 Exception in thread main ja