У меня есть идентификатор в этом формате:Regex для GSTRING Токеном
1.5.31.14.${CHANNEL}.${SLOT}
Это чтение из файла в виде строки, и я пытаюсь заменить $ {} лексемы с другими переменными.
Однако, когда я бегу:
id.replaceAll("\${CHANNEL}", "3")
он будет пытаться заменить $ {CHANNEL} со значением называется
CHANNEL
в функции и выдаст ошибку.
Я схожу с ума, пытаясь понять, что RegEx я могу использовать, чтобы заменить
${CHANNEL} and ${SLOT}
в ID.
Если у кого-нибудь есть предложения, пожалуйста, дайте мне знать.
EDIT:
Здесь ошибка:
Exception thrown
groovy.lang.MissingPropertyException: No such property: CARD for class: ConsoleScript91
EDIT 2 Вот код, который я побежал:
def id = '1.5.31.14.${CHANNEL}.${SLOT}'
id = id.replaceAll('\${CHANNEL}', '3')
replaced = id.replaceAll('\${SLOT}', '2')
print replaced
Здесь ошибка:
Exception thrown
java.util.regex.PatternSyntaxException: Illegal repetition near index 0
${CHANNEL}
^
at java_lang_String$replaceAll$1.call(Unknown Source)
at ConsoleScript5.run(ConsoleScript5:2)
Вы пробовали размещая их в одиночные кавычки, так что они не оценивают, как GStrings? 'id.replaceAll ('\ $ {CHANNEL}'," 3 ")'? – toniedzwiedz
@Tom Да, и это вызывает точно такую же ошибку. –
Странно, используя одинарные кавычки _should_ предотвратите это поведение. Вы уверены, что исключение выбрано в строке, где вы пытаетесь «replaceAll»? Может быть, 'toString' вызывается ранее в GString, содержащей эту последовательность символов? Это когда оцениваются GStrings. Может быть, где-то в коде, который читает файл? – toniedzwiedz