Java 使用用户字符串的正则表达式

Java 使用用户字符串的正则表达式,java,Java,我想将传入的用户字符串转换为正则表达式,传入的字符串可能包含空格。是否有一种方法可以忽略字符串中的所有空白?您可能有兴趣在模式类中使用该标志,它: 允许在中使用空格和注释 图案在这种模式下,空格是 忽略,并嵌入注释 从#开始忽略,直到 行尾 您可以找到有关将标志与模式一起使用的更多信息 另一种方法是在编译正则表达式之前,使用or或删除空格。也许类似的方法对您有好处: Pattern p = Pattern.compile("...", Pattern.COMMENTS) 模式注释是指: 允许在

我想将传入的用户字符串转换为正则表达式,传入的字符串可能包含空格。是否有一种方法可以忽略字符串中的所有空白?

您可能有兴趣在
模式
类中使用该标志,它:

允许在中使用空格和注释 图案在这种模式下,空格是 忽略,并嵌入注释 从#开始忽略,直到 行尾

您可以找到有关将标志与模式一起使用的更多信息


另一种方法是在编译正则表达式之前,使用or或删除空格。

也许类似的方法对您有好处:

Pattern p = Pattern.compile("...", Pattern.COMMENTS)
模式注释是指:

允许在中使用空格和注释 图案在这种模式下,空格是 忽略,并嵌入注释 从#开始忽略,直到 行尾


使用正则表达式替换(请参见)删除空格。如果您要将用户输入转换为正则表达式,那么在转义时要非常小心(就像SQL一样,用户可以输入元字符,这将使您的程序行为异常);你可以获得正确逃跑的信息。

@Zach L和@smas回答了你真正的问题

我想将传入的用户字符串转换为正则表达式


我想警告你要小心。编写一个病态的正则表达式是很容易的,它可以为某些输入字符串消耗大量的CPU时间。如果您允许用户自己输入任意正则表达式,那么他们可能会输入病理正则表达式,这可能是偶然的,也可能是为了让您的服务过载……

此外,我已经在使用Pattern.CASE\u不敏感。看起来我不能使用多个标志吗?可以使用|(单栏)操作符使用多个标志。比如
Pattern.CASE不区分大小写| Pattern.COMMENTS
。你可以在Ok上看到更多的例子,谢谢,我用了+来代替。这个错误很严重,值得注意。我们可不想让博比的小桌子进来!