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