Java 如何从模糊模式中提取子字符串
我需要提取字符串的某个部分,但该字符串的模式可能会有所不同 我们所说的字符串定义了一组属性,即[name=value]对。例如:Java 如何从模糊模式中提取子字符串,java,regex,string,Java,Regex,String,我需要提取字符串的某个部分,但该字符串的模式可能会有所不同 我们所说的字符串定义了一组属性,即[name=value]对。例如: "a=somevalueb=othervaluec=lastvalue" 我需要获取属性b的值(“其他值”)。但是,属性的顺序不是指定的。此外,某些属性(包括b)可能根本不存在。最大的问题是属性不一定(但可能!)被任何东西分开,所以我不能拆分然后只得到以“b=”开头的块。我需要在整个字符串中找到属性 我知道的是: 字符串中可能包含哪些属性 每个属性最多只能发生一次
"a=somevalueb=othervaluec=lastvalue"
我需要获取属性b的值(“其他值”)。但是,属性的顺序不是指定的。此外,某些属性(包括b)可能根本不存在。最大的问题是属性不一定(但可能!)被任何东西分开,所以我不能拆分然后只得到以“b=”开头的块。我需要在整个字符串中找到属性
我知道的是:
- 字符串中可能包含哪些属性
- 每个属性最多只能发生一次(但可能根本不会发生)
- 当然,我知道我要提取的属性
谢谢你的建议!(顺便说一句:如果有必要的话,可以用Java实现)很容易找到您要寻找的值的开头。诀窍是找到结尾,因为你的文本格式不好 根据您的描述,该值要么在文本末尾结束(显然),要么在另一个已知键存在时结束
b=(.*?)(?=a=|c=|d=|e=|$)
跟进
要在“属性值可以包含换行符”(来自注释)时工作,有两种方法:
- 将标志指定为要删除的第二个参数
- 在正则表达式中打开标志:
(?s)b=(.*)(=a=| c=| d=| e=|$)