Не распознается escape-символ в конце строки - PullRequest
1 голос
/ 27 мая 2020

Я пишу код в Python для тестирования компонента GUI. Я сравниваю строку со значением, которое должно быть в поле атрибутов. Текст, который я ищу, заканчивается символом * и обрабатывается как дикий. Это то, чего я ожидал, поэтому, естественно, я добавил \ перед *, чтобы избежать этого. Передаваемая переменная "value" - это (text) 1 / \*.

if node.exists and node.JavaFXObjectText == value:
    string = type + " for node and selection details match." 

Оператор if не вводится, потому что node.JavaFXObjectText - это (text) 1 / *, а значение - (text) 1 / \*. Я также пробовал использовать функцию re.escape(), и получаю идентичные результаты. Проблема возникает только тогда, когда символ, которого я пытаюсь избежать, является последним символом в строке, поскольку я использовал другое регулярное выражение с тем же оператором if. Я также пробовал это без \, и * по-прежнему считается диким.

Ответы [ 2 ]

1 голос
/ 27 мая 2020

Используйте

if node.exists and node.JavaFXObjectText == re.sub(r'\\\*$', '*', value):

, чтобы заменить \* в конце строки символом *.

0 голосов
/ 27 мая 2020

Ryszard Czech, мне нужно провести небольшое исследование относительно того, что происходит в этой подфункции, но это не совсем сработало. У меня такое же поведение, как и раньше.

re.sub(r'\\*$', '*', value)

Удаление одного из \, как показано в приведенном выше фрагменте, заставило его работать, хотя я не уверен, почему.

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