使用Spring表达式语言中的regex提取子字符串

时间:2019-04-12 12:07:20

标签: java regex regular-language spring-el

我有一个类似

的字符串

字符串1:qwertyuiop{EID##00000000001234567890##EID}asdaff

字符串2:EID##...##EID

我想要输出1234567890,如果String1中存在${String1}.indexOf('EID##') != -1 AND ${String1}.indexOf('##EID') != -1 AND (${String1}.indexOf('##EID') - ${String1}.indexOf('EID##'))> 5 ? (${String1}.substring(${String1}.indexOf('EID##')+5,${String1}.indexOf('##EID'))).replaceAll("^0+", "") : (${String2}.indexOf('EID##') != -1 AND ${String2}.indexOf('##EID') != -1 AND (${String2}.indexOf('##EID') - ${String2}.indexOf('EID##'))> 5 ? (${String2}.substring(${String2}.indexOf('EID##')+5,${String2}.indexOf('##EID'))).replaceAll("^0+", "") : '0000000000') ,如果不存在,它将在字符串2中搜索。如果两个结果都不存在,则结果为00000000

但是我只能使用Spring Expression语言。

我尝试过类似的事情:

{{1}}

但是问题是我的字符数限制为350。(这是523个字符) 有没有更简单的方法?

1 个答案:

答案 0 :(得分:0)

我尝试了这个,它的工作原理。

($ {String1}匹配'。 EID ##。 ## EID。*')吗? ($ {String1} .substring($ {String1} .indexOf('EID ##')+ 5,$ {String1} .indexOf('## EID')))。replaceAll(“ ^ 0+”,“” ): ((($ {String2}匹配'。 EID ##。 ## EID。*')?($ {String2} .substring($ {String2} .indexOf('EID ##')+ 5,$ {String2} .indexOf('## EID')))。replaceAll(“ ^ 0+”,“”):'000000000')