java - 正则表达式中下划线字符的含义

标签 java regex

注意:我的程序运行正常,我只是在寻找原因的解释。

我有一个 java 程序,它读取一个文件,计算文件中的字数,然后将字数和计数输出到另一个文件。在我的第一部分中,我使用正则表达式来替换任何不是字母的字符,并将其替换为空字符串。

freq.add(in.next().replaceAll("[^A-Za-z]", ""));

然而,这并没有考虑带连字符的单词,所以我将正则表达式更改为:

freq.add(in.next().replaceAll("[^A-Za-z_-]", ""));

我的问题是,为什么添加下划线和连字符有效?下划线字符背后的含义是什么?

当我提问时,所有语言的正则表达式都一样吗?

此外,如果在其他地方回答了这个问题,我深表歉意,我进行了多次搜索但没有成功。

最佳答案

正则表达式中的下划线没有什么特别的,它只是像 A 这样的普通字符。字符类末尾的连字符也不是特别的,尽管它位于其他两个字符之间,正如您所例如,通过说 A-Z,用它来匹配所有字母。

正则表达式在大多数语言之间相似,但一些更深奥的功能可能与语言不同或缺失。

关于java - 正则表达式中下划线字符的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32773866/

相关文章:

c# - 正则表达式 C# - 是否可以在匹配时提取匹配项?

css - 如何使用正则表达式删除一些 css 属性?

javascript - 替换除第一个和最后一个以外的所有空格

java - 二维数组-Session

java - 将 javafx.scene.image.Image 写入文件?

Java 西蒙说

python - Perl 中的 "s!"运算符有什么作用?

java - 如果正则表达式包含所有字母且整个字符串中仅包含 2 个大写字母,则返回行

java - 如何在 MyBatis Mapper XML 中连接一个 ResultHandler

java - 如何使用 Intellij 配置和结构化子项目