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

Regex as an input through console

我需要从用户那里获取正则表达式并将其分配给一个变量。正则表达式不会硬编码在代码中。如何实现这一目标。我正在使用 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

已编辑:抱歉。不是一个对象。它是一个变量

In 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$" 以使此正则表达式正常工作。