admin管理员组文章数量:1794759
Java如何用正则表达式匹配字符串中的 '\'
背景
今天运营反馈一个问题,自己扫描的单词记录看不到,看了下日志显示同步的英语不符合要求,限制了符合以下正则表达式的句子才会入库:
代码语言:javascript代码运行次数:0运行复制String regex = "^[A-Za-z0-9\s,.!?:]+$";
稍微解释下:
- ^表示匹配字符串的开头;
- [A-Za-z0-9\s,.!?:]表示匹配一个英文字母(大写或小写)、数字、空格、逗号、句号、感叹号、问号、或冒号中的任意一个字符;
- +表示匹配前面的子表达式一次或多次;
- $表示匹配字符串的结尾。
但是这次同步上了的句子下面这个,里面竟然包含反斜杠,然而运营又希望能支持,只能照改了~
代码语言:javascript代码运行次数:0运行复制{"7.pub :They went to the pub .\b8.circle :Make a circle ."}
正题
在Java中,由于反斜杠字符 \
在正则表达式中具有特殊含义,因此在使用正则表达式匹配字符串中的 \
时,需要使用双反斜杠 \\
来表示一个反斜杠字符。这是因为在 Java 中,反斜杠字符本身也是一个转义字符,因此需要使用两个反斜杠来表示一个反斜杠字符。
当轻描淡写加个 \\
以为就能解决问题时,一测试发现还是没匹配到。
String regex = "^[A-Za-z0-9\s,.!?\\:]+$";
想了下突然意识到,当打印日志显示的是 \b8
时,其实传的数据应该是 \\b8
才对。
所有要匹配两个 \\
需要写四个反斜杠 \\\\
才可以~
修改后测试果然通过,下面演示如何使用正则表达式匹配字符串中的 \
:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String input = "This is a backslash \\ test";
String pattern = "\\\\"; // 匹配一个反斜杠字符
Pattern p = Patternpile(pattern);
Matcher m = p.matcher(input);
while (m.find()) {
System.out.println("Found match at index " + m.start());
}
}
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2024-02-28,如有侵权请联系 cloudcommunity@tencent 删除字符串java正则表达式日志同步本文标签: Java如何用正则表达式匹配字符串中的 x27x27
版权声明:本文标题:Java如何用正则表达式匹配字符串中的 '' 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1754735473a1705741.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论