Regex 创建正则表达式以匹配子字符串

Regex 创建正则表达式以匹配子字符串,regex,scala,Regex,Scala,我可以拥有以下结构的字符串: 服务不允许使用MIME类型[应用程序/八位字节流] 服务不允许MIME类型[application/pdf] 服务不允许MIME类型[application/txt] 我想创建一个与这些字符串匹配的正则表达式,因此我创建了如下正则表达式: val p:Regex=Regex.quote(“服务不允许MIME类型([[a-z/]+])).r 但是当我尝试匹配时,我得到一个None表示没有匹配。正则表达式有什么问题?我正在使用分组来匹配变量部分。您不应该转义特殊的正

我可以拥有以下结构的字符串:

服务不允许使用MIME类型[应用程序/八位字节流] 服务不允许MIME类型[application/pdf] 服务不允许MIME类型[application/txt] 我想创建一个与这些字符串匹配的正则表达式,因此我创建了如下正则表达式:

val p:Regex=Regex.quote(“服务不允许MIME类型([[a-z/]+])).r

但是当我尝试匹配时,我得到一个
None
表示没有匹配。正则表达式有什么问题?我正在使用分组来匹配变量部分。

您不应该转义特殊的正则表达式元字符,这些字符必须在表达式中保持特殊。您过度扩展了该模式,使其成为文字字符串模式

请注意,您显示的字符串中似乎有前导/尾随空格,您需要在两端添加
\s*

另外,
[a-z/]
字符类与第一个字符串中括号内的
-
不匹配

你可以用

val p = """\s*MIME type (\[[^\]\[]+\]) is not allowed for service\s*""".r
注意
\[[^\]\[]+\]
部分,它匹配

  • \[
    -a
    [
    字符
  • [^\]\[]+
    -1+字符,而不是
    [
    ]
  • \]
    -匹配
    ]
    字符

Try
val p=“”\s*服务不允许使用MIME类型(\[[a-z/-]+\])。r
。注意,第一个内部有一个
-
,但您的
[a-z/]
与之不匹配。如果
[…]
中有任何内容,请将
[a-z/-]+
替换为
[^\[\]+
是的,但我认为可以使用Regex.quote进行转义,否?否,不应该转义必须保持特殊的特殊Regex元字符。您过度扩展了该模式,使其成为文字字符串模式。