java - 想要字符串 ${username} 的正则表达式
问题描述
问题是用户名也可以在其中包含$
符号,例如$mahanta
。我的正则表达式是
\${([^}]+)}
但这不起作用。由于语言是 java 并且正则表达式是字符串,我$
用另一个反斜杠转义了。甚至添加了 2 个反斜杠。但是给出了运行时异常。
解决方案
这有效:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexTest {
public static void main(String[] args) {
Pattern pattern = Pattern.compile("\\$\\{([^}]+)}");
Matcher matcher = pattern.matcher("${$mat}");
System.out.println("matcher = " + matcher);
boolean matches = matcher.matches();
System.out.println("matches = " + matches);
String group = matcher.group(1);
System.out.println("group = " + group);
}
}
请参阅Java PatternSyntaxException:字符串替换上的非法重复?关于为什么{
需要逃脱。
推荐阅读
- r - Pheatmap 缩放创建空行(缺失值)
- python - 如何将字符串转换为参数?
- amazon-web-services - AWS ALB 未解析
- sql - SQL Server 中的异常 CHECKPOINT 行为
- c# - 使用c#访问远程windows机器文件
- asp.net - 如何在 Kentico 电子邮件模板中包含 Google 字体?
- sorting - 为什么我的 $sort Operator on dates 函数在我的查询中不一致?
- mysqli - MySQL查询显示结果超出范围
- javascript - Angular 抱怨无法读取未定义的属性
- python-3.7 - python-lambda-local self = reduction.pickle.load(from_parent)