Основное различие заключается в классах.
Например, U + 00FF - это "ÿ"
, но не символ ASCII. Так что \w
(Соответствует «символу слова» или буквам)
re.search(r'\w', '\xFF') # match
re.search(rb'\w', b'\xFF') # no match
re.search(rb'\w', '\xFF'.encode()) # still no match
(И другие буквы Unicode тоже подойдут)
Если вы посмотрите https: // docs .python.org / 3 / library / re.html , вы можете увидеть три класса, к которым это относится:
\d
Для шаблонов Unicode (str) :
Соответствует любой десятичной цифре Юникода (то есть любому символу в категории символов Юникода [Nd]). Это включает в себя
blockquote>[0-9]
, а также много других цифровых символов. Если используется флагASCII
, сопоставляется только[0-9]
.Для 8-битных (байтовых) шаблонов:
Соответствует символам, которые считаются пробелами в наборе символов ASCII; это эквивалентно
blockquote> blockquote>[ \t\n\r\f\v]
.
\s
Для шаблонов Unicode (str):
Соответствует символам пробела Unicode (который включает в себя
blockquote>[ \t\n\r\f\v]
, а также многие другие символы, например неразрывные пробелы, предписанные правилами типографики во многих языках). Если используется флагASCII
, сопоставляется только[ \t\n\r\f\v]
.Для 8-битных (байтовых) шаблонов:
Соответствует символам, которые считаются пробелами в наборе символов ASCII; это эквивалентно
blockquote> blockquote>[ \t\n\r\f\v]
.
\w
Для шаблонов Unicode (str):
Соответствует символам слов Unicode; это включает в себя большинство символов, которые могут быть частью слова на любом языке, а также цифры и подчеркивание. Если используется флаг
blockquote>ASCII
, сопоставляется только[a-zA-Z0-9_]
.Для 8-битных (байтовых) шаблонов:
Соответствует символам, которые считаются буквенно-цифровыми в наборе символов ASCII; это эквивалентно
blockquote> blockquote>[a-zA-Z0-9_]
. Если используется флагLOCALE
, соответствует символам, которые считаются буквенно-цифровыми в текущей локали и подчеркивании.Таким образом, если вы установите флаг
ASCII
, они должны быть в основном одинаковыми.Для вашей точной функции, пример будет:
test(r'\w|.', '\xFF')
Следующее моделирует индикатор выполнения в строке состояния Excel:
Public Sub UpdateStatusBar(percent As Double, Optional Message As String = "")
Const maxBars As Long = 20
Const before As String = "["
Const after As String = "]"
Dim bar As String
Dim notBar As String
Dim numBars As Long
bar = Chr(31)
notBar = Chr(151)
numBars = percent * maxBars
Application.StatusBar = _
before & Application.Rept(bar, numBars) & Application.Rept(notBar, maxBars - numBars) & after & " " & _
Message & " (" & PercentageToString(percent) & "%)"
DoEvents
End Sub
AFAIK, нет никакого способа воспроизвести синюю строку точек, используемых Word & Excel для показа продвижения к 100%, например, при открытии файла.
Я помню однажды видящий некоторый код для тиражирования его в строке состояния, но это было сложно, и я не рекомендую это, когда будет довольно достаточно вместо этого сказать "X %, завершенные" в строке состояния, с помощью Приложения. StatusBar.
Я рекомендовал бы, кроме того, записать текущее состояние StatusBar, затем восстановил бы его, когда все сделано.
Dim OldStatus
With Application
OldStatus = .DisplayStatusBar
.DisplayStatusBar = True
.StatusBar = "Doing my duty, please wait..."
End With
' Do what you do best here (you can refresh the .StatusBar message with updted, as needed)
With Application
.StatusBar = False
.DisplayStatusBar = OldStatus
End With
Я не получил доступ к индикатору выполнения, но я использовал в прошлом что-то вроде этого для размещения текста состояния задачи в строку состояния...
Sub StatusBarExample()
Application.ScreenUpdating = False
' turns off screen updating
Application.DisplayStatusBar = True
' makes sure that the statusbar is visible
Application.StatusBar = "Please wait while performing task 1..."
' add some code for task 1 that replaces the next sentence
Application.Wait Now + TimeValue("00:00:02")
Application.StatusBar = "Please wait while performing task 2..."
' add some code for task 2 that replaces the next sentence
Application.Wait Now + TimeValue("00:00:02")
Application.StatusBar = False
' gives control of the statusbar back to the programme
End Sub