可能重复:
如何在 Java 中为正则表达式转义文本
我有一个问题,我的用户有便盆......
详细地说,我的 Android 应用程序使用 Google 语音搜索返回语音结果,如果用户已将设置应用到“阻止冒犯性词语”,它将返回“离开”为“g* a***”
在尝试确定用户所说的内容时,我会经常使用常见的匹配,例如:
if(voiceResult.matches(someCommand)) { //do something
如果用户选择说脏话,那么我将收到以下错误:
java.util.regex.PatternSyntaxException: Syntax error in regexp pattern near index X
我真的不能要求我的所有用户要么不发誓或关闭过滤器,特别是从我的测试来看,谷歌语音搜索似乎有一个肮脏的头脑,并且经常在最随机的句子中间返回脏话!
所以,我对如何处理这种可能性有点迷茫......我一直在寻找一种在字符串中“忽略正则表达式”的方法,但我画了一个空白,我无法弄清楚我将如何动态地转义字符串中包含的任何 *...
目前,我唯一的选择似乎是检测到“*”,然后很好地要求他们不要发誓或删除过滤器!
欢迎提出建议!除非你认为他们应该因为他们的不礼貌而被逼近……
请注意:“走开”目前没有被过滤 - 这是一个例子......
编辑:我确认重复语音请求的最简单示例正则表达式:
String userWords = "g* a***"
if(userWords.matches(userWords)) { // Then go on to compare userWords with other strings
编辑2:
String goAway = "g* a***";
String goAway1 = Pattern.quote(goAway);
String goAway2 = Pattern.quote(goAway);
if (goAway1.matches(goAway2)) { \\ do something