Java正则表达式字符类中的非法转义字符

2023-12-29

我试图确定传递到我的 Expressions 类中的表达式是否有运算符。任何一个+-*/^分别用于加、减、乘、除和指数。

这段代码有什么问题?

private static boolean hasOperator(String expression)
{
    return expression.matches("[\+-\*/\^]+");
}

我以为我已经正确转义了特殊字符,但我不断收到错误:“非法转义字符“尝试编译时。

感谢您的帮助。


不要逃避不需要逃避的事情:

return expression.matches("[-+*/^]+");

应该可以正常工作。大多数正则表达式元字符 (., (, ), +, *等)在字符类中使用时会失去其特殊含义。您需要注意的是[, -, ^, and ]。对于最后三个,您可以策略性地将它们放置在 char 类中,这样它们就不会具有特殊含义:

  • ^可以放置在除左括号之后之外的任何位置:[a^]
  • -可以放在左括号之后或右括号之前:[-a] or [a-]
  • ]可以放在左括号之后:[]a]

但为了将来的参考,如果您需要在正则表达式字符串中包含反斜杠作为转义字符,则需要将其转义两次,例如:

"\\(.*?\\)" // match something inside parentheses

因此,要匹配字面上的反斜杠,您需要其中四个:

"hello\\\\world" // this regex matches hello\world

另一个注意事项:String.matches()将尝试匹配entire字符串反对模式,所以除非你的字符串只包含一堆运算符,否则你需要使用类似的东西.matches(".*[-+*/^].*");相反(或使用Matcher.find() http://download.oracle.com/javase/1.5.0/docs/api/java/util/regex/Matcher.html#find%28%29)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java正则表达式字符类中的非法转义字符 的相关文章

随机推荐

  • 使用显式类型初始化 ImmutableMap? [复制]

    这个问题在这里已经有答案了 我需要初始化一个 ImmutableMap guava 21 0 并且我需要它解析为一个 Map gt 对于这个例子 我将只使用 String 所以我有 import com google common coll
  • 如何使用 Python 获取带有 Selenium 的

    我正在使用 Selenium WebDriver 使用 Python 进行 UI 测试 我想检查以下 HTML ul li Something here li li And here li li Even more here li ul 我
  • Java JDBC - 如何使用 tnsnames.ora 连接到 Oracle

    tnsnames ora文件包含Databases以及它们的描述 host port 是否可以依赖上述文件建立连接 仅提供数据库名称 为了找到这个文件 我必须知道默认的 oracle 主目录 我需要在 Windows 注册表中检查HKEY
  • 带子边距的 Div 高度

    我有 2 个 div 我想让它们的高度相等 var highestCol SecondColumn height column first height highestCol 我知道第二个 div 总是高于第一个 div 当两个 div 中
  • 如何将 Phillips Hue 灯泡的 RGB 值转换为 XY 值

    如何正确地将我拍摄的图片中的像素 RGB 值转换为发送到 Phillips Hue 设备所需的 XY 值 我当前的代码执行以下操作 1 拍一张照片 找出最常见的颜色 2 循环扔它们 然后再拍一张照片 3 将值发送到 Phillips Hue
  • 正则表达式匹配 html 标签之外的文本,而不是特定标签之间的文本

    我试图获得一个正则表达式来匹配 html 标签外部和之间的一些单词 而不是标签本身 但我还需要在它们位于 html 标题标签 h1 h2 h3 等 之间时排除它们 这是我尝试过的 bword b gt lt i 实例 https regex
  • 等待多重未来?

    我想运行相同类型的任务 工作线程 但一次不超过一定数量的任务 当任务完成时 其结果是新任务的输入 然后可以启动该新任务 有没有什么好的方法可以在 C 11 中使用异步 未来范例来实现这一点 乍一看 它看起来很简单 您只需使用以下命令生成多个
  • 在 package.json 中使用私有 git 存储库部署 Google App Engine

    我的 package json 依赖于私有 Bitbucket 存储库 my dependency git ssh email protected cdn cgi l email protection something my depend
  • 嵌套在 firebase 集合模型中的集合没有添加功能

    在我的应用程序中 我尝试使用 Firebase 来存储基于骨干框架的实时数据 问题是这样的 我有一个子级别的模型和集合 它们都是通用骨干模型和集合 var Todo Backbone Model extend defaults title
  • 使用 autofac 解析方法内部类的实例

    使用下面的 PipelineX 类 是否有任何方法可以解析应用于管道的过滤器 而无需注入 autofac 容器并调用 container Resolve public class PipelineX
  • AWS EventBridge API 目标无法连接到 EC2 私有 IP

    我的目标是通过 HTTPS 将消息从 EventBridge 转发到运行 httpd 服务器的 EC2 实例 该实例只有其私有IP 事实证明 EventBridge 的 API 目标及其目标和连接与外部 IP 配合得很好 但私有 IP 没有
  • 未找到工作职能。尝试公开您的工作类别和方法

    首先 我查看了其他具有相同错误消息的 SO 帖子 但似乎没有一个帖子能解决我的问题 我尝试了很多排列和选择 我的函数构建良好 但无法在 CLI 中运行 我收到以下神秘错误 MSFT 文档似乎也没有给出答案 未找到工作职能 尝试公开您的工作类
  • WPF 文本框边框何时被选中?

    我想让 WPF 文本框具有深蓝色边框且厚度等于 1 即使选择了文本框 我也想让 WPF 具有此边框 深蓝色 厚度设置为 1 我尝试通过以下代码完成此任务 然而 它根本不起作用 有什么想法或提示吗 任何帮助将不胜感激
  • Django-注册设置无需密码

    我正在尝试创建一个网站 人们只在其中输入电子邮件地址 然后使用 cookie 等登录 稍后 我会要求他们提供密码和姓名 但不会使用用户名 我正在尝试使用 django registraition 来执行此操作 但出现错误并且遇到一些问题 首
  • Ruby on Rails CSV 用“”代替实际引号

    我正在尝试生成 CSV 文件 除了空白字段之外一切都很好 我不太确定是否有 quot quot 而不是实际的报价 我提供了用于生成文件和一些输出的代码
  • 处理用户输入中从右到左/从左到右覆盖字符

    我需要将用户输入嵌入到字符串中 例如 发送了一条消息 如果用户输入包含方向性覆盖字符之一 U 202D 或 U 202E 就会出现问题 如果 包含 RLO 字符 则显示的字符串将变为 发送了消息 我的问题是如何最好地处理这个问题 RLO 和
  • EF 迁移 - 数据库中已有一个名为 '' 的对象

    我在向数据库添加新表时遇到问题 这些是我在尝试添加新迁移时输入的命令 Add Migration AdminSett 脚手架迁移 AdminSett 设计者代码 迁移文件包含当前 Code First 模型的快照 此快照用于计算模型的更改
  • 指令内部模板中的 ng-click 未提供该功能

    ng click不提供警报 单击指令的内部模板时 不会显示警报框 小提琴链接在这里 http jsfiddle net NNDHX http jsfiddle net NNDhX 你的指令有它自己的隔离范围 所以函数 hi 应该在指令的范围
  • 为 Android 流媒体创建视频

    这是我为创建在 Android 上播放的视频所做的搜索的答案 虽然android支持mp4流媒体但并不容易 我根据我的经验推断出的简单步骤是 1 首先使用超级编码器对视频进行编码 参数是 A 顶级参数 a mp4作为容器 b mpeg 4
  • Java正则表达式字符类中的非法转义字符

    我试图确定传递到我的 Expressions 类中的表达式是否有运算符 任何一个 分别用于加 减 乘 除和指数 这段代码有什么问题 private static boolean hasOperator String expression r