Python Regex найти / разделить точное слово, включая круглые скобки в конце / формула excel - PullRequest
1 голос
/ 26 мая 2020

У меня проблемы с последней частью регулярного выражения, это моя попытка разбить строку на

  • заглавные буквы, не окруженные круглыми скобками
  • символы в двойных кавычках (включая кавычки)
  • операторы
  • числа
  • точное слово TODAY()
import re

s1 = 'A+" hello"+B'
s2 = 'A+(100-20)'
s3 = 'A-B+TODAY()-100'

print (re.split('([A-Z]+|["].?["]|[\=\+\-\%\*\^]|\bTODAY\(\)\b)', s1))
#expected ['', 'A', '', '+', '" hello"', '+', '', 'B', '']
#actual   ['', 'A', '', '+', '" hello"', '+', '', 'B', '']

print (re.split('([A-Z]+|["].?["]|[\=\+\-\%\*\^]|\bTODAY\(\)\b)', s2))
#expected ['', 'A', '', '+', '(', '100', '-', '20', ')']
#actual   ['', 'A', '', '+', '(100', '-', '20)']

print (re.split('([A-Z]+|["].?["]|[\=\+\-\%\*\^]|\bTODAY\(\)\b)', s3))
#expected ['', 'A', '', '-', '', 'B', '', '+', '', 'TODAY', '()', '-', '100']
#actual   ['', 'A', '', '-', '', 'B', '', '+', '', 'TODAY()', '-', '100']

редактировать: исправление, означало сказать символы любой длины в двойных кавычках

1 Ответ

2 голосов
/ 26 мая 2020

Шаблон для сопоставления TODAY () должен быть первой альтернативой

import re    
print (re.split('(TODAY\(\)|[A-Z]+|["].?["]|[\=\+\-\%\*\^])','A-B+TODAY()'))
...