2013-07-16 6 views
0

Я немного борюсь с ColdFusion (а не на том языке, который я когда-либо писал).Получение строки между двумя символами - Coldfusion

Я пытаюсь сделать регулярное выражение, чтобы получить часть строки. Так, например, если моя строка: D_CECILA23_CEC23423 Мне нужна часть, которая находится между двумя символами подчеркивания.

Это код, который у меня есть до сих пор, и он работает на все, что является альфа-символами, но когда число бросается в микс, оно просто ломается.

<cfset myStr = "D_CELCI_LISA"> 
<cfset myStr2 = reReplace(myStr, "([\w\d\%]+)(\_)([/ A-Z]+)(\_)([\w\d\?]+)", "\3", "all")  > 

<cfoutput> 
myStr: #myStr#<br /> 
myStr2: #myStr2#<br /> 
</cfoutput> 

Который дает мне:

myStr: D_CELCI_LISA 
myStr2: CELCI 

ответ

4

Если это действительно так просто, как получить текст между первым и вторым символом подчеркивания, вам не нужно регулярное выражение. Это будет сделать это:

myStr2 = listGetAt(myStr, 2, "_"); 

Тем не менее, это должно сделать для регулярных выражений в этом контексте: ^.*_([^_]+)_.*$, например:

myStr2 = reReplace(myStr, "^.*_([^_]+)_.*$", "\1", "all"); 
+0

Это было волшебным. Спасибо, мил. Я могу принять ответ за 7 минут. – user2429578

+0

Только последний вопрос, скажем, мне нужна строка после последнего подчеркивания, как бы я об этом поделаю? Например, d_celci_cellu, и я хочу, чтобы cellu – user2429578

+0

listGetAt (myStr, "_") был бы проще всего. Существует множество функций списка: http://help.adobe.com/en_US/ColdFusion/10.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec1a60c-7ffc.html#WSc3ff6d0ea77859461172e0811cbec22c24-6a42 (где «список» представляет собой любую строку с заданным разделителем (по умолчанию запятая). –

0

@ user2429578 ListLast() и ListFirst() для последнего или первый элемент списка.

Смежные вопросы