Извлечь подстроку с помощью регулярных выражений в языке выражений Spring - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть строка типа

Строка 1: abcdefgh{EID##00000000001234567890##EID}khkgfhjjh

Строка 2: qwertyuiop{EID##00000000001234567890##EID}asdaff

и я хочу вывод 1234567890, если EID##...##EID присутствует в String1, если его нет, он будет искать в строке 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 символа) Есть ли более простой способ для этого?

1 Ответ

0 голосов
/ 12 апреля 2019

Я попробовал это, это работает.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...