2015-10-06 8 views
-1

Может кто-то, пожалуйста, помогите мне решить вопрос, который я встречаю, пытаясь написать это регулярное выражение в ColdFusion? Я хотел бы иметь функцию, которая будет возвращать:Как написать это регулярное выражение в ColdFusion?

  • 1, если строка выглядит точно так же, как item_name-Copy (ххх), где item_name является переменной и ххх может быть любым целым числом

  • 0 если не

Я попытался с реваншем, но до сих пор не нашел то, что я ищу

Что я получаю на свалке является пустой массив, в то время как я ожидал получить 1 Заранее спасибо за помощь

ответ

1
  1. Вам нужно бежать ( и ), как \( и \). Они являются регулярными выражениями metacharacters used for a group.
  2. [:digit:] должно быть [[:digit:]]. Это POSIX character class.
  3. [[:digit:]] следует повторять один или несколько раз, как [[:digit:]]+
  4. Вы можете также использовать \d+ для соответствия цифр.
  5. Используйте REFind() вместо REMatch(), чтобы получить 0 или 1.

Regex:

^\w+-Copy\(\d+\)$ 

Код:

<cfset nameItem = "item_name-Copy(1)"> 
<cfset result = REFind("^\w+-Copy\(\d+\)$",nameItem)> 
<cfdump var="#result#"> 

Выход:

1 
+0

Tha nks много Мариано, ты сделал мой день! – Jacques

+0

Почему вы используете '[[: digit:]]' вместо '\ d'? –

+0

Хороший вопрос. ОП использовал его в комментарии, который он удалил. Я использовал его, чтобы подчеркнуть, что не так с его кодом. Я буду редактировать для дальнейшего использования. – Mariano

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