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

时间:2015-01-16 05:15:27

标签: 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

编辑:对不起。不是一个对象。它是一个变量

1 个答案:

答案 0 :(得分:1)

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