Regex 要作为正则表达式传递的转义字符串
我想创建一个函数来创建与输入端给定的任意字符串匹配的正则表达式。例如,当我向它馈送Regex 要作为正则表达式传递的转义字符串,regex,scala,Regex,Scala,我想创建一个函数来创建与输入端给定的任意字符串匹配的正则表达式。例如,当我向它馈送123$时,它应该与字符串末尾的“123$”匹配,而不是123 所以最后一个findAllIn应该在文本中找到\d+,但它没有。这里怎么了?您可以使用Java的模式类将字符串转义为正则表达式。看 例如: scala> Pattern.quote("123$").r.findFirstIn("123$") res3: Option[String] = Some(123$) 为了引起对Harold L上述评论的
123$
时,它应该与字符串末尾的“123$”
匹配,而不是123
所以最后一个
findAllIn
应该在文本中找到\d+
,但它没有。这里怎么了?您可以使用Java的模式类将字符串转义为正则表达式。看
例如:
scala> Pattern.quote("123$").r.findFirstIn("123$")
res3: Option[String] = Some(123$)
为了引起对Harold L上述评论的更多关注,如果您想使用Scala库执行此操作,可以使用:
import scala.util.matching.Regex
Regex.quote("123$").r.findFirstIn("123$")
您正在尝试在脚本中生成正则表达式吗?我不确定这个问题。在Java中,您需要使用另一个\来转义\例如匹配空格\\s。不确定scala语言。如果scala语言不包含
+
,它应该如何在文本中找到\d+
(语法上)。但是还是不行,谢谢!工作def quote(x:String)=““\Q”+x+“\E”
在scala.util.matching
中还有Regex.quote
来做同样的事情。
import scala.util.matching.Regex
Regex.quote("123$").r.findFirstIn("123$")