Вы можете заставить обработчик исходного кода работать, зарегистрировав имя текстового поля:
someStackPanel.RegisterName(txtNumber.Name, txtNumber);
Это позволит вам вызвать FindName в StackPanel и найти TextBox.
Я не понимаю, почему вы хотите использовать регулярное выражение, если вы просто получаете подмножество из строки.
Это работает так же:
if line.startswith('test:'):
print(line[5:line.find('.')])
example :
>>> line = "test: match this."
>>> print(line[5:line.find('.')])
match this
Regex работает медленно, неудобно проектировать и трудно отлаживать. Есть определенные причины использовать его, но если вы просто хотите извлечь текст между test:
и .
, то я не думаю, что это одно из этих случаев.
Для большей гибкости (например, если вы зацикливаете список строк, которые вы хотите найти в начале строки, а затем индексировать) заменить 5 (длина «test:») в индексе с помощью len(str_you_looked_for)
.
Вам нужно использовать re.search, поскольку re.match
пытается совпадения с началом строки. Чтобы соответствовать, пока не встретится пробел или период.
re.search(r'(?<=test :)[^.\s]*',text)
Чтобы соответствовать всем символам до тех пор, пока не встретится период,
re.search(r'(?<=test :)[^.]*',text)
Все после теста, включая тест
test.*
Все после теста, без теста
(?<=video).*
Вы можете использовать положительный прогноз вперед (?=\.|\s)
, чтобы остановить совпадение в этом месте:
(?<=test\s:\s).*(?=\.|\s)
Два \s
в (?<=test\s:\s)
будут «обрезать» совпадение. Следите за .match()
, так как он будет искать только совпадение в начале строки (Авинаш алейди указал на это, но это очень важная нота!) [/ G3]
См. demo
import re
p = re.compile(ur'(?<=test\s:\s).*(?=\.|\s)')
test_str = u"test : match this."
print re.search(p, test_str).group()