java - 正则表达式作为通过控制台的输入

标签 java regex

我需要从用户那里获取正则表达式并将其分配给一个变量。正则表达式不会被硬编码在代码中。如何实现这一目标。我正在使用 JOption 对话框,但它不起作用。还有其他办法吗?

目前这有效。

            patternToMatch =   "^ABC.*XY\\\\16$";      
            Pattern p = Pattern.compile(patternToMatch);

这不起作用。

            patternToMatch = JOptionPane.showInputDialog(null, "Enter Regex Term");
            Pattern p = Pattern.compile(patternToMatch);

Input = ^ABC.*XY\\\\16$ // Not Working
Input= "^ABC.*XY\\\\16$" //Not Working

已编辑:抱歉。不是一个物体。它是一个变量

最佳答案

在 Java 中 \\\ 的转义序列。因此,字符串文字 "^ABC.*XY\\\\16$" 的实际值为 "^ABC.*XY\\16$"。查看 JOptionPane.showMessageDialog(null, "^ABC.*XY\\\\16$"); 显示的内容。

引用 Java 语言规范 3.10.6 "Escape Sequences for Character and String Literals" :

\ \     /* \u005c: backslash \ */

因此,您应该在对话框中输入 "^ABC.*XY\\16$" 以使此正则表达式正常工作。

关于java - 正则表达式作为通过控制台的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27977691/

相关文章:

仅正整数或负整数的正则表达式,不环顾四周

c# - 正则表达式按目标字符串拆分到某个字符

java - 自定义 Junit 运行程序,运行之前和之后

Java 强制转换为父类(super class)并调用重载方法

java - AppWidgetProvider 的 Android M 权限

python - 如何从 Python 列表中删除日期

java - 正则表达式 - 以 OPERATION 开头,后面必须跟一个整数或 double

regex - 数字范围的 Vim 正则表达式 - 不工作

java - 在 Android Studio 中使用复杂查询从 Firebase 数据库获取节点

java - 计算arraylist中的相等元素