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

问题描述 投票:-1回答:1

我有一个类似的字符串

字符串1:abcdefgh{EID##00000000001234567890##EID}khkgfhjjh

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

我希望输出1234567890,如果在String1中存在EID##...##EID,如果不存在则会在字符串2中搜索。如果两个结果都不存在则将为00000000

但我只能使用Spring Expression语言。

我尝试过类似的东西:

${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')

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

java regex regular-language spring-el
1个回答
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')

© www.soinside.com 2019 - 2024. All rights reserved.