SkyJump
131 / 117 / 29
Регистрация: 09.07.2019
Сообщений: 1,068
Записей в блоге: 4
1

Регулярное выражение не работает

15.05.2020, 14:38. Показов 498. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Я пишу код:
Python
1
2
3
4
import re
string = "console.write('hello world')"
regular = "(\()(.+)(\))|([A-Za-z_]+)|(\.)"
print(re.findall(regular, string))
Запускаю, но выводит какую-то тарабарщину:
Код
[('', '', '', 'console', ''), ('', '', '', '', '.'), ('', '', '', 'write'), ('(', "'hello world'", ')', '', '')]
Хотя я ожидаю:
Код
['console', '.', 'write', ('(', "'hello world'", ')')]
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.05.2020, 14:38
Ответы с готовыми решениями:

Не работает регулярное выражение
1. В заданной строке символов найдите извлечь информацию, заключенную между <td> и </td>. 2. На...

Регулярное выражение
Создать регулярное выражение для заполнения поля по шаблону, например электронный адрес:...

Регулярное выражение
Добрый день, помогите пожалуйста написать регулярное выражение для данных примеров ∗({8}+) ...

Регулярное выражение
Пытаюсь распарсить нестандартную строку, не пойму, что в регулярном выражении не так, почему не...

Регулярное выражение
Добрый день! Не могу понять в чем ошибка import re test_str = regex =...

3
Заклинатель змей
700 / 555 / 219
Регистрация: 30.04.2016
Сообщений: 2,591
15.05.2020, 14:43 2
Hyppoprogramm, findall возвращает и пустые матчи, насколько помню
0
SkyJump
131 / 117 / 29
Регистрация: 09.07.2019
Сообщений: 1,068
Записей в блоге: 4
15.05.2020, 14:54  [ТС] 3
DobroAlex, а как этого избежать?

Добавлено через 38 секунд
Попробую заменить (\().+(\)) на \(|\).

Добавлено через 5 минут
Теперь нормально работает.
0
Просто Лис
Эксперт Python
5721 / 3521 / 1054
Регистрация: 17.05.2012
Сообщений: 10,343
Записей в блоге: 9
15.05.2020, 17:02 4
Опять токенайзер пишешь?

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import re
 
s = "console.write('hello world')"
while True:
    if not s:
        break
    if s[0] in '(.)':
        print(s[0])
        s = s[1:]
        continue
    m = re.match(r'^[a-zA-Z][a-zA-Z]*', s)  # ID
    if m:
        print(s[0:m.end()])
        s = s[m.end():]
        continue
    m = re.match(r"^'.*?'", s)   # STRING
    if m:
        print(s[0:m.end()])
        s = s[m.end():]
        continue
    raise ValueError(s)
 
# console
# .
# write
# (
# 'hello world'
# )
0
15.05.2020, 17:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.05.2020, 17:02
Помогаю со студенческими работами здесь

Написать регулярное выражение
Необходимо регулярное выражение для следующей лексемы Строковая константа состоит из одной или...

Доработать регулярное выражение
Делаю что-то типа логико-арифметического калькулятора, который должен вычислять и арифметические, и...

Регулярное выражение Python
Здравствуйте. На сайте есть страницы с фото. Необходимо с каждой страницы вырезать пути к этим...

Простое регулярное выражение
как искать в тексте цифры черезе регулярное выражение?

Регулярное выражение, получить 4 числа
Всем привет, есть html код <td><div style="text-align:right"><div...

Регулярное выражение сумма чисел
Есть строка 1:1(7:5, 6:3 или 3:6) Я пытаюсь сделать регулярное выражение...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru