什么时候'.'正则表达式中不匹配?

2023-11-22

我遇到了以下问题(简化)。我写了以下内容

Pattern pattern = Pattern.compile("Fig.*");
String s = readMyString();
Matcher matcher = pattern.matcher(s);

在读取一个字符串时,匹配器无法匹配,即使它以“Fig”开头。我将问题追溯到字符串下一部分中的流氓字符。它的代码点值为 1633

(int) charAt(i)

但与正则表达式不匹配。我认为这是由于输入过程中某处的非 UTF-8 编码造成的。

The Javadocs say:

预定义字符类 。任何字符(可能匹配也可能不匹配行终止符)

据推测,这不是严格意义上的字符,但它仍然是字符串的一部分。我如何检测这个问题?

更新:这是由于 (char)10 不容易发现。我上面的诊断是错误的,下面的所有答案都与所提出的问题相关并且很有用。


检查这一点很容易:

import java.util.regex.*;

public class Test {
    public static void main(String[] args) {
        Pattern pattern = Pattern.compile(".");
        for (char c = 0; c < 0xffff; c++) {
            String text = String.valueOf(c);
            if (!pattern.matcher(text).matches()) {
                System.out.println((int) c);
            }
        }
    }
}

在我的盒子上,输出是:

10
13
133
8232
8233

其中,10 和 13 分别是“\n”和“\r”。 133 (U+0085) 是“下一行”,8232 (U+2028) 是“行分隔符”,8233 (U+2029) 是“段落分隔符”。

注意:

  • 这不会测试基本多语言平面之外的任何 Unicode 字符
  • 它仅使用默认选项
  • 这似乎与你对角色 1633 (U+0661) 的体验相矛盾
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么时候'.'正则表达式中不匹配? 的相关文章

随机推荐

  • Nullable DateTimes 和 AddDays() 扩展

    我有一个日期时间变量 可以为 null 或日期时间 我认为可以为 null 的 DateTime 类型可以工作 但我收到一条错误消息 告诉我说 Nullable
  • 为整个应用程序应用圆角

    如何实现应用于整个视图的圆角 如屏幕截图所示 请注意 导航栏和键盘角都是圆角的 我尝试过设置cornerRadius 10 and masksToBounds YES对彼此而言window layer and window rootView
  • Django - 导入错误:没有名为 *.urls 的模块

    我正在努力通过官方 Django 教程并使用 Django 版本 1 6 1 Python 2 7 6 稍微调整以满足我自己的需要 我现在正在映射 URL 但当很明显有一个模块内有一个适当命名的文件时 我总是收到 没有名为customers
  • 使用带有回调函数的 array_filter 删除空数组元素

    我正在尝试使用函数 array filter 删除数组中的空元素 当我使用这样的外部回调时 function callback a return empty a arr array abc ghi res array filter arr
  • 将实时摄像头视图嵌入 UIView 中

    我一直在尝试找出如何在 iPhone 中嵌入一个小型实时摄像头视图UIView无济于事 我什至无法在网上找到任何样本 我知道这是可行的 但我什至不知道从哪里开始 似乎有很多例子表明其他人已将视图添加到相机的完整屏幕视图中 但反之则不然 看起
  • 在 WPF 中制作图表的最佳方法是什么? (或者一般来说这也适用于 WPF)

    所以我正在 WPF 中制作一个软件 我希望能够根据我存储的数据制作图表 只是带有 x 和 y 轴的线图 理想情况下 我希望它们具有优雅 简洁的风格 我知道 WPF 没有附带图表 并且我在 WinForms 项目中尝试过 ZedGraph 但
  • 如何向现有 CSS 类添加新规则

    在下面的代码中 我已经说明了我想要实现的目标 通过向现有 CSS 类添加新规则来更改它 h4 hello h4 这是针对在不同尺寸的屏幕上运行的站点的预处理
  • Fortran 中等级(形状)未知的子例程参数

    我想知道如何在 Fortran 中最好地处理采用未知等级参数的子例程 例如 Real 8 array1 2 2 array2 2 2 3 call mysubroutine array1 call mysubroutine array2 就
  • 如何使用命令提示符运行C程序[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 如果 c 文件的位置与默认位置不同 如何在安装了代码块
  • 从函数返回未来值

    我最近开始学习 Rust 我不确定如何从应该返回 Result 的函数返回未来值 当我尝试仅返回响应变量并删除结果输出时 出现错误 不能使用 返回的函数中的运算符std string String tokio main async fn d
  • 如何从 Lucene TokenStream 获取 Token?

    我正在尝试使用 Apache Lucene 进行标记化 但我对从某个地方获取标记的过程感到困惑TokenStream 最糟糕的是我正在查看 JavaDocs 中解决我的问题的评论 http lucene apache org java 3
  • 如何通过 SQL 访问雪花查询配置文件概览统计信息?

    在 Snowflake SnowSight UI 的 查询配置文件 视图中 有一个名为 配置文件概述 的部分 您可以在其中查看总执行时间的细分 它包含处理 本地磁盘 I O 远程磁盘 I O 同步等统计信息 完整列表在这里https doc
  • 在 MongoDB 中存储日期的最佳方式是什么?

    我刚刚开始学习MongoDB 希望慢慢从MySQL迁移 在 MySQL 中 有两种不同的数据类型 DATE 0000 00 00 and DATETIME 0000 00 00 00 00 00 在我的 MySQL 中 我使用DATE类型
  • jQuery UI 手风琴激活

    我不知道如何做到这一点 或者我是否可以做到这一点 我有一个 jQuery UI Accordion 多个部分 每个部分包含多个锚标记 每个锚标记都有一个唯一的字符串 id 我希望能够将手风琴打开到具有给定 id 的特定元素所在的位置 就像说
  • 将图标放置在带有文本溢出省略号的行之后

    我遇到文本溢出问题 省略号 我想在 3 个点之后放置一个图标 但该图标总是出现在下一行 因为 display block 属性 有什么办法可以显示这样的线吗 我的例子fiddle和CSS title text overflow ellips
  • Android 处理程序消息和 ListView

    这是我的错误 Uncaught remote exception Exceptions are not yet supported across processes android util AndroidRuntimeException
  • 编写一个 __init__ 函数在 django 模型中使用

    我正在尝试写一个 init 我的模型之一的函数 以便我可以通过执行以下操作来创建对象 p User name email 当我编写模型时 我有 def init self name email house id password model
  • 如何使用 powershell 压缩超过 2 GB 的文件?

    我正在开发一个项目来压缩从几个 mb 到几个 GB 大小的文件 我正在尝试使用 powershell 将它们压缩成 zip 我遇到的主要问题是使用压缩存档对单个文件大小有 2 GB 上限 我想知道是否有另一种方法来压缩文件 Edit 因此
  • jQuery .change() 事件在 IE 中未触发

    我有一个对话框 它执行依赖于三个输入字段的计算 当它们中的任何一个发生更改时 它会检查它们是否全部已填充 如果是 则进行处理并给出响应 它在 FF Chrome Opera 等中工作得非常好 但在任何版本的 IE 中它都会停止工作 我的 j
  • 什么时候'.'正则表达式中不匹配?

    我遇到了以下问题 简化 我写了以下内容 Pattern pattern Pattern compile Fig String s readMyString Matcher matcher pattern matcher s 在读取一个字符串