Pattern.matches() 针对 char 数组,无需在 java 中转换为 String

2024-01-04

Scenario

我需要根据字符数组检查正则表达式模式(char[])。出于安全考虑,我不允许将字符数组转换为字符串。 Java 的 Pattern.matches() 方法旨在获取模式和字符串。另外,正则表达式模式是从另一个来源传递给我的,并且会发生变化(不是恒定的)。

这不起作用:

// This pattern comes from another source, that I do not control. It may change.
String pattern = "^(.)\\1+$"; 

char[] exampleArray = new char[4];
    exampleArray[0] = 'b';
    exampleArray[1] = 'l';
    exampleArray[2] = 'a';
    exampleArray[3] = 'h';

// This should return true, for this pattern, but I cannot pass in a char[].
boolean matches = Pattern.matches(pattern, exampleArray); 

Thoughts

我尝试解构正则表达式模式并检查模式每个部分的数组,但解释模式每个部分所需的条件逻辑阻碍了我。例如:假设模式包含类似的内容"(.){5,10}"。然后我只需要检查char[]长度。但是,如果它包含"^B(.){5,10}X",那么我需要做一些非常不同的事情。感觉有太多的可能性来有效地解构正则表达式模式并解释每种可能性(这正是我总是使用Pattern.matches()).

Question

在不将字符数组转换为字符串或创建字符串的情况下,根据字符数组检查正则表达式模式的最有效方法是什么?


Pattern.matches 接受通用的 CharSequence。例如,您可以使用 java.nio 中的 CharBuffer 而不是 String。

boolean matches = Pattern.matches(pattern, CharBuffer.wrap(exampleArray));

CharBuffer.wrap 不会在内存中创建密码的额外副本,因此在所有选项中它是最安全的。

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

Pattern.matches() 针对 char 数组,无需在 java 中转换为 String 的相关文章

  • org.apache.hadoop.security.AccessControlException:客户端无法通过以下方式进行身份验证:[TOKEN,KERBEROS] 问题

    我正在使用 java 客户端通过 Kerberos 身份验证安全访问 HDFS 我尝试打字klist在服务器上 它显示已经存在的有效票证 我收到的异常是客户端无法通过以下方式进行身份验证 TOKEN KERBEROS 帮助将不胜感激 这是一
  • 最小化代表性整数的误差之和

    Given n integers between 0 10000 as D1 D2 Dn where there may be duplicates and n can be huge I want to find k distinct r
  • Java 公历日历更改时区

    我正在尝试设置 HOUR OF DAY 字段并更改 GregorianCalendar 日期对象的时区 GregorianCalendar date new GregorianCalendar TimeZone getTimeZone GM
  • java.lang.IllegalStateException:应用程序 PagerAdapter 更改了适配器的内容,而没有调用 PagerAdapter#notifyDataSetChanged android

    我正在尝试使用静态类将值传递给视图 而不是使用意图 因为我必须传递大量数据 有时我会收到此错误 但无法找出主要原因是什么 Error java lang IllegalStateException The application s Pag
  • 如何实现n个元素的查找和插入操作的动态二分查找

    这个想法是使用多个数组 每个长度为 2 k 根据 n 的二进制表示来存储 n 个元素 每个数组都是排序的 不同的数组没有以任何方式排序 在上述数据结构中 SEARCH是通过对每个数组进行一系列二分查找来进行的 INSERT 是通过一系列相同
  • 从最终实体获取根证书和中间证书

    作为密码学的菜鸟 我每天都会偶然发现一些简单的事情 今天只是那些日子之一 我想用 bouncy castle 库验证 java 中的 smime 消息 我想我几乎已经弄清楚了 但此时的问题是 PKIXparameters 对象的构建 假设我
  • 检测并缩短字符串中的所有网址

    假设我有一条字符串消息 您应该将 file zip 上传到http google com extremelylonglink zip http google com extremelylonglink zip not https stack
  • jdbc mysql loginTimeout 不起作用

    有人可以解释一下为什么下面的程序在 3 秒后超时 因为我将其设置为在 3 秒后超时 12秒 我特意关闭了mysql服务器来测试mysql服务器无法访问的这种场景 import java sql Connection import java
  • 如何在用户输入数据后重新运行java代码

    嘿 我有一个基本的java 应用程序 显示人们是成年人还是青少年等 我从java开始 在用户输入年龄和字符串后我找不到如何制作它它们被归类为 我希望它重新运行整个过程 以便其他人可以尝试 的节目 我一直在考虑做一个循环 但这对我来说没有用
  • Spring Boot Data JPA 从存储过程接收多个输出参数

    我尝试通过 Spring Boot Data JPA v2 2 6 调用具有多个输出参数的存储过程 但收到错误 DEBUG http nio 8080 exec 1 org hibernate engine jdbc spi SqlStat
  • tomcat 中受密码保护的应用程序

    我正在使用 JSP Servlet 开发一个Web应用程序 并且我使用了Tomcat 7 0 33 as a web container 所以我的要求是tomcat中的每个应用程序都会password像受保护的manager applica
  • 如何访问JAR文件中的Maven资源? [复制]

    这个问题在这里已经有答案了 我有一个使用 Maven 构建的 Java 应用程序 我有一个资源文件夹com pkg resources 我需要从中访问文件 例如directory txt 我一直在查看各种教程和其他答案 但似乎没有一个对我有
  • Java 和 Python 可以在同一个应用程序中共存吗?

    我需要一个 Java 实例直接从 Python 实例数据存储中获取数据 我不知道这是否可能 数据存储是否透明 唯一 或者每个实例 如果它们确实可以共存 都有其单独的数据存储 总结一下 Java 应用程序如何从 Python 应用程序的数据存
  • logcat 中 mSecurityInputMethodService 为 null

    我写了一点android应显示智能手机当前位置 最后已知位置 的应用程序 尽管我复制了示例代码 并尝试了其他几种解决方案 但似乎每次都有相同的错误 我的应用程序由一个按钮组成 按下按钮应该log经度和纬度 但仅对数 mSecurityInp
  • 关键字“table”附近的语法不正确,无法提取结果集

    我使用 SQL Server 创建了一个项目 其中包含以下文件 UserDAO java public class UserDAO private static SessionFactory sessionFactory static se
  • 专门针对 JSP 的测试驱动开发

    在理解 TDD 到底是什么之前 我就已经开始编写测试驱动的代码了 在没有实现的情况下调用函数和类可以帮助我以更快 更有效的方式理解和构建我的应用程序 所以我非常习惯编写代码 gt 编译它 gt 看到它失败 gt 通过构建其实现来修复它的过程
  • 如何匹配 R 中的所有匹配项?

    我有 1000 个名字的列表 说A 我还有另外 5 个名字的清单 说B 我想找出这5个名字出现在1000个号码列表中的第几行 例如 Amy 在 A 中可以出现 25 次 B 里有艾米 我想知道 Amy 出现在 A 中的哪些行 我以前使用过
  • Opencv Java 灰度

    我编写了以下程序 尝试从彩色转换为灰度 Mat newImage Imgcodecs imread q1 jpg Mat image new Mat new Size newImage cols newImage rows CvType C
  • 包 javax.el 不存在

    我正在使用 jre6 eclipse 并导入 javax el 错误 包 javax el 不存在 javac 导入 javax el 过来 这不应该是java的一部分吗 谁能告诉我为什么会这样 谢谢 米 EL 统一表达语言 是 Java
  • 对具有混合类型值的数组进行数字排序

    我有一个像这样的混合数组 fruits array lemon Lemon 20 banana apple 121 40 50 然后申请sort 其功能如下 sort fruits SORT NUMERIC foreach fruits a

随机推荐

  • 在 iOS 模拟器上显示 GMSMarkers 时出现 GMSThreadException

    我正在开发一个应用程序来在 GMSMapView 上显示大约 200 个 GMSMarkers 我尝试了两种显示标记的方法 方法1有点慢 但没有出现错误 但是方法2在真机上运行顺利 但在iOS模拟器上测试时出现GMSThreadExcept
  • 使用 vim 读取 gnu-screen 日志

    最近我发现了一个很棒的终端多路复用工具 称为 gnu screen 我对它完全满意 但我遇到了一个我想改进的不便之处 C a H 命令使屏幕将所有内容记录到名为 screenlog 的日志文件中 但以一种奇怪的方式对控制字符进行编码 例如
  • 如何检查地址是否在 Google Maps API 上的区域内

    我有一个地址字符串 例如 12 Swiss Ave 冈维尔 旺加努伊 新西兰 给定这个地址 我需要确定该地址是在新西兰的北岛还是南岛内 如果我将地址传递给谷歌地图 API 我得到的数据如下 不幸的是 它没有告诉我它在哪个岛 那么 我该如何检
  • 有向图和无向图有什么区别

    这些基本类型之间有什么区别 在附图中我看到有向有箭头 但是有向图中的这些箭头以及无向图中没有箭头到底意味着什么 它的意思正是它听起来的样子 在有向图中 方向很重要 即边 2 gt 3 表示边是有向的 只有从 2 到 3 的边 没有从 3 到
  • 在matlab中将GML文件转换为邻接矩阵

    我有一个GML http en wikipedia org wiki Graph Modelling Language有向图文件 政治博客 http www personal umich edu mejn netdata polblogs
  • 结合 grid.arrange 删除两个 ggplot 之间的所有空间

    我想粘贴两个图 主题之间没有任何空间 因此它们共享一个轴 Given p1 lt qplot 1 1 xlab p1 lt p1 theme legend position none axis text x element blank ax
  • struts 2 在调用堆栈中找不到名称为[excelStream]的java.io.InputStream

    excelStream我正在尝试下载 Excel 文件 在我的动作课上 public class ActivityTrackerExlReportAction extends BaseAction private InputStream e
  • 如何在 fop 生成的 pdf 中显示预先格式化的文本?

    有谁知道如何显示预格式化的 html 文本 例如 ol li item 1 li li item 2 li li item 3 li ol 在用 fop 生成的 pdf 中 Thanks 这个 XSLT 1 0
  • MFC:CFormView 派生类的 OnInitialUpdate 函数

    我的 CFormView 派生类的结构如下 class FormViewClass public CFormView FormViewClass void Initialize virtual void OnInitialUpdate 理想
  • 了解开关条件下的寄存器用法

    我有一个 C 语言的开关条件代码和汇编代码 但对我来说设置什么似乎非常随意 edx或eax或ecx 如何区分 edx epx ecx ebp 之间的区别 就连教科书也没有给我足够的解释 include
  • 作为启动 RDP 程序运行时如何停止初始表单最大化?

    当主机和客户端都是 XP Pro 计算机时 在终端服务 远程桌面 会话中启动时 我的 VB6 应用程序中的启动表单表现得很奇怪 该表单本来是要居中的 但实际上它最大化了 并且其内容位于左上角 看起来很奇怪 请注意 只有当应用程序路径用于 R
  • 在 VTable 上下文中,虚拟方法调用和直接方法调用有什么区别?

    在 VTable 上下文中 虚拟方法调用和直接方法调用有什么区别 在虚拟和直接调用的情况下如何解决方法引用 理论上 不存在这样的东西 C 标准没有定义它 定义了虚拟调用 但没有指定它们必须如何工作 不存在像VTable这样的东西 在实践中
  • 计算 R 中矩阵的成对差异数

    我有以下矩阵 0 1 0 0 0 1 0 0 Row A 0 1 0 0 0 0 1 0 Row B 0 1 0 0 0 0 0 0 Row C 0 0 1 0 0 0 0 0 Row D 我想制作一个新的矩阵 显示每行之间的成对差异 例如
  • GHC生成的.hi、.p_hi和.dyn_hi文件有什么区别

    我正在尝试减少包含 Nix 派生的存档的大小 我注意到每个模块都有 3 个文件 hi p hi 和 dyn hi 大小都相似 ghc 提示 解释器只需要 hi 如果我删除其余变量 则什么也不会发生 那么 p hi 和 dyn hi 是沙袋吗
  • 在 Django 中使用 formset_factory

    我是 Django 的新用户 我使用以下代码生成表单 class GetMachine forms Form Machine Name forms CharField max length 20 Number of lines forms
  • 如何限制Python 3中多线程程序中的API调用?

    经过大量研究 我不确定最佳实践是什么 我的以下想法是否合适 我想要访问一个 API 该 API 将我可以进行的调用总数限制为每分钟 50 次 我的程序有多个独立运行的线程 如何限制我的程序保持在阈值以下 我的想法是创建一个队列 并每 X 秒
  • 优化与未优化构建的 KCachegrind 输出

    I run valgrind tool callgrind executable在由以下代码生成的可执行文件上 include
  • 未知的底部 blob“数据”(层“conv1”,底部索引 0)

    尝试在我自己的数据集上训练 LeNet 我从长一维矢量数据集生成了 HD F5 文件 并创建了 HDF5 数据层 如下所示 我对顶部 blob 的命名与生成 HDF5 时的命名相同 name Test net layer name data
  • 导出大型 MySql 表

    我在 MySql 中有一个表 我使用 PhpMyAdmin 进行管理 目前约有 960 000 行 我有一个老板喜欢看Excel中的数据 这意味着每周我都要将数据导出到Excel中 我正在寻找一种更有效的方法来做到这一点 因为我实际上无法一
  • Pattern.matches() 针对 char 数组,无需在 java 中转换为 String

    Scenario 我需要根据字符数组检查正则表达式模式 char 出于安全考虑 我不允许将字符数组转换为字符串 Java 的 Pattern matches 方法旨在获取模式和字符串 另外 正则表达式模式是从另一个来源传递给我的 并且会发生