Я пытаюсь извлечь последнее слово из строки атрибута пользователя.
Атрибут пользователя: AAA.USER.ATTRIBUTE(7)
Строка значения атрибута, например. "ord1 ord2 ord3 ord4"
Если я использую выражение
AAA.USER.ATTRIBUTE(7).AFTER_REGEX(re/\s/)
мой результат "ord2 ord3 ord4"
, т. е. я получаю все после первого пробела.
У меня был длинный диалог с Copilot и почти такой же утомительный с ChatGPT, они оба предлагают что-то вроде
AAA.USER.ATTRIBUTE(7).AFTER_REGEX(re/s(\w+)$/)
Однако это возвращает значение NULL.
Кто-нибудь знает, как я мог получить это последнее слово?
Оба случая:
AAA.USER.ATTRIBUTE(7) = "ord1 ord2 ord3 ord4"
Тест 1:
AAA.USER.ATTRIBUTE(7).AFTER_REGEX(re/\s/)
Ожидаемый и фактический результат: "ord2 ord3 ord4"
— все после первого пробела
Тест 2:
AAA.USER.ATTRIBUTE(7).AFTER_REGEX(re/s(\w+)$/)
Ожидаемый результат по ChatGPT и Copilot: "ord4"
Фактический результат: UNDEF (результат в вычислителе выражений графического интерфейса Netscaler)
Спасибо за советы, немного подредактировал
...и вы можете выделить текст внутри предложения, окружив его обратными кавычками. Например, чтобы отобразить ...строку, например. «ord1 ord2 ord3 ord4» как ...строка, например. "ord1 ord2 ord3 ord4"
.
Еще раз спасибо, Кэри. Для новичка эта помощь действительно полезна.
Чтобы захватить все после последнего пробела, используйте:
.+\s(.+)$
Если добавить разделители netscaler, это будет выглядеть так
re#.+\s(.+)$#
Знак доллара привязывает выражение к концу строки. О группировке захвата (круглые скобки) читайте здесь.
Спасибо, Блюджей, попробую на работе в понедельник.
Возможно, обратите внимание на разницу между \s
(пробелом) и s
(буквальным символом s
).
Верно, именно поэтому здесь есть косая черта, нам нужны пробелы. Вы также можете использовать пробел, например, нажав клавишу пробела, но таким образом он захватывает другие типы возможных пробелов (например, табуляцию).
Я хотел бы поблагодарить Блюджея за его усилия. Однако Citrix Netscaler — это отдельный мир, поэтому он не сработал. Решение было предоставлено мне в сообществе Citrix; потеряйте регулярное выражение и вместо этого используйте выражения Netscaler AppExpert. Код, который работал, был следующим:
AAA.USER.ATTRIBUTE(7).TYPECAST_LIST_T(' ').GET_REVERSE(0)
Еще раз спасибо Блюджею за усилия и Кэри за помощь Сообществу N00b.
См. Помощь по разметке. В частности, сделайте отступ в четыре пробела, чтобы выделить ее как код.