Regex 需要scala中的正则表达式吗

Regex 需要scala中的正则表达式吗,regex,scala,Regex,Scala,这是我的回答 scala > val a= """{"string":"{\"data\":{\"id\":\"2c91809f4ef7678b014ef86ee28511c2\",\"unitName\":\"gatlir1\",\"owner\":\"gatlir1\",\"description\":\"gatlir1\",\"nofChairs\":0,\"nofBeds\":0,\"nofApptStartWithInHour\":0,\"nofApptDischargeW

这是我的回答

   scala > val a= """{"string":"{\"data\":{\"id\":\"2c91809f4ef7678b014ef86ee28511c2\",\"unitName\":\"gatlir1\",\"owner\":\"gatlir1\",\"description\":\"gatlir1\",\"nofChairs\":0,\"nofBeds\":0,\"nofApptStartWithInHour\":0,\"nofApptDischargeWithInHour\":0,\"modifiedDateTime\":\"Aug 4, 2015 4:18:13 AM\"},\"status\":\"SUCCESS\",\"message\":\"unit_save\"}"}"""
我需要从scala中的响应中获取id值。我将响应存储在一个变量中。我已经为此编写了正则表达式,并存储在另一个变量中

这就是问题所在,我犯了错误。 正则表达式:

在将正则表达式插入“b”时,我没有得到任何错误,但在比较时,我得到了错误

如果我这样写表达式

          scala> a.matches(b) 
错误:

  java.util.regex.PatternSyntaxException: Illegal repetition
   {\"id\":\"(\w+)\"
   at java.util.regex.Pattern.error(Pattern.java:1955)
   at java.util.regex.Pattern.closure(Pattern.java:3157)
   at java.util.regex.Pattern.sequence(Pattern.java:2134)
   at java.util.regex.Pattern.expr(Pattern.java:1996)
   at java.util.regex.Pattern.compile(Pattern.java:1696)
   at java.util.regex.Pattern.<init>(Pattern.java:1351)
   at java.util.regex.Pattern.compile(Pattern.java:1028)
   at java.util.regex.Pattern.matches(Pattern.java:1133)
   at java.lang.String.matches(String.java:2109)
java.util.regex.PatternSyntaxException:非法重复
{\“id\”:\“(\w+)”
位于java.util.regex.Pattern.error(Pattern.java:1955)
位于java.util.regex.Pattern.closure(Pattern.java:3157)
位于java.util.regex.Pattern.sequence(Pattern.java:2134)
位于java.util.regex.Pattern.expr(Pattern.java:1996)
位于java.util.regex.Pattern.compile(Pattern.java:1696)
Pattern.(Pattern.java:1351)
位于java.util.regex.Pattern.compile(Pattern.java:1028)
位于java.util.regex.Pattern.matches(Pattern.java:1133)
位于java.lang.String.matches(String.java:2109)

有谁能帮我一下吗?

你应该避开
{

val b= """\{\"id\":\"(\w+)\""""

您应该转义
{

val b= """\{\"id\":\"(\w+)\""""

为什么在这里使用正则表达式?请阅读JSON。JSON不是一种正则语言,不能用正则表达式轻松描述

这里有一个库可以解析Scala的JSON


它还将使访问内部的任何其他对象变得更加容易。

为什么在这里使用正则表达式?只需阅读JSON。JSON不是一种正则语言,无法用正则表达式轻松描述

这里有一个库可以解析Scala的JSON


它还将使访问内部的任何其他对象变得更加容易。

以下是固定代码:

val a= """{"string":"{"data":{"id":"2c91809f4ef7678b014ef86ee28511c2","unitName":"gatlir1","owner":"gatlir1","description":"gatlir1","nofChairs":0,"nofBeds":0,"nofApptStartWithInHour":0,"nofApptDischargeWithInHour":0,"modifiedDateTime":"Aug 4, 2015 4:18:13 AM"},"status":"SUCCESS","message":"unit_save"}"}"""
val b= """\{"id":"(\w+)""".r
val allMatches = b.findAllMatchIn(a)
allMatches.foreach { m =>
     println(m.group(1))
}
它打印:
2C91809F4EF7678B014EF86EE2851C2


注意:您不必在带引号的字符串中转义双引号(请参见)。

以下是固定代码:

val a= """{"string":"{"data":{"id":"2c91809f4ef7678b014ef86ee28511c2","unitName":"gatlir1","owner":"gatlir1","description":"gatlir1","nofChairs":0,"nofBeds":0,"nofApptStartWithInHour":0,"nofApptDischargeWithInHour":0,"modifiedDateTime":"Aug 4, 2015 4:18:13 AM"},"status":"SUCCESS","message":"unit_save"}"}"""
val b= """\{"id":"(\w+)""".r
val allMatches = b.findAllMatchIn(a)
allMatches.foreach { m =>
     println(m.group(1))
}
它打印:
2C91809F4EF7678B014EF86EE2851C2


注意,您不必在带引号的字符串中转义双引号。请参阅。

谢谢您的回复。我已经删除了{,现在得到的响应是“Boolean=false”,我需要实现。我可以在那里做些什么更改?@RaviVaranasi处理JSON时,正则表达式通常不好。选择一个解析JSON的库并使用它。如果你仍然想使用正则表达式,你应该使用
find
。我在我的代码中使用这个表达式。检查(正则表达式(“\”id\:\”(\w+)。查找。存在。另存为(“id”))谢谢你的回复。我已经删除了{,现在我得到的回应是“Boolean=false”,我需要实现。我可以在那里做些什么更改?@RaviVaranasi处理JSON时,正则表达式通常不好。选择一个解析JSON的库并使用它。如果你仍然想使用正则表达式,你应该使用
find
。我在我的代码中使用这个表达式。检查(正则表达式(“\”id\:\”(\w+)。查找。存在。另存为(“id”))实际上,这个id是动态值,我需要在下一个请求中使用这个值,所以对于regex,我获取它并在下一个请求中使用它。+1。regex在这里只会很痛苦。@RaviVaranasi没有理由不能使用JSON库解析出下一个请求所需的任何值。我必须使用regex或JSON解析?实际的实际上,这个id是动态值,我需要在下一个请求中使用这个值,所以对于regex,我将获取它并在下一个请求中使用它。+1。regex在这里只会很痛苦。@RaviVaranasi没有理由不能使用JSON库解析出下一个请求所需的任何值。我必须使用regex或JSON解析?
matchs()
需要完整的字符串匹配。您需要正确地转义
{
,并在模式的末尾添加
*
。“\'id\\:\”(\w+)\.*”,就像这样。
匹配()
需要完整的字符串匹配。您需要正确地转义
{
,并在模式的末尾添加
*
。“\'id\+:\”(\w\.*”)像这样..非常感谢,但是如果我在gatling工具中编写了相同的代码,我会得到这个错误----错误--------------------------------------------------------------------->没有定义名为“id”的属性2(66.67%)>正则表达式(\{“id”:“(\w+))。查找(0)。存在,未找到任何内容1(33.33%)=====================================================================================================================================我在代码中使用的相同正则表达式。检查(正则表达式(“\{”id:“(\w+”))。查找.exists.saveAs(“id”)。尝试
。检查(正则表达式(“{”id:“(\w+”)))。无论是什么,请选择“id”)。\saveAs”(“)
。非常感谢您,但是如果我在gatling工具中编写了相同的代码,我会遇到这个错误-----错误--------------------------------------------------------------------->没有定义名为“id”的属性2(66.67%)>正则表达式(\{“id”:“(\w+))。查找(0)。存在,未找到任何内容1(33.33%)========================================================================================================================================我在代码中使用的相同正则表达式。检查(正则表达式(“\{”id:“(\w+”))。查找.exists.saveAs(“id”)。尝试
。检查(正则表达式(“{”id:“(\w+”)))。无论是什么,都可以将其保存为“
)。