模式匹配以获取值

时间:2018-08-13 17:57:52

标签: java pattern-matching

假设我有一个名为text的字符串,其中包含以下内容:

blabla="A_VALUE"

通过模式匹配,是否可以直接检索引号内的值?

例如:类似于“格式字符串”,您可以在其中编写模式%s,然后获取该值。

现在,我发现一种解决方法是:

text = text.replace("blabla=","");
text = text.replaceAll("\"","");

但是,这非常丑陋。

注意:它不一定是java,我想知道这个概念是否存在,如果存在,它有什么名字。

尽管我不确定\\\\#\\s*(\\S+?)\\s*的含义,但这post提供了一些见识

2 个答案:

答案 0 :(得分:1)

中有sscanf与您所描述的相似。

但是,Java具有Scanner类而不是此类功能。

另一种选择是使用正则表达式,然后检查相关的Matcher组,如此处所述:what is the Java equivalent of sscanf for parsing values from a string using a known pattern?

答案 1 :(得分:1)

您的意思是获取包括转义的双引号在内的字符串的内容吗?

如果是这样,则此模式应为您工作:"(\\.|[^"])*"

这意味着:找到一个双引号,然后找到零个或多个出现的转义字符或直到找到另一个引号为止不是双引号的任何东西。

细分:

  • "-查找双引号
  • \\.-查找任何转义字符
  • [^"]-查找不是双引号的任何字符
  • (x|y)*-查找x或y零次或多次
  • (\\.|[^"])*-查找任何转义的字符或任何零或多次非双引号字符。

它将找到:

Source                        Result
----------------------------+---------------
var str1 = "a string";      | "a string"
var str2 = "a \" string"    | "a \" string"
var str3 = "";              | ""
var str4 = "a string \\";   | "a string \\"