Я хотел бы объединить три моих регулярных выражения, которые очищают текст (пустые строки, начальные и конечные пробелы и т. Д.), Если это возможно, одно регулярное выражение, или если это невозможно - в два.Объединить три регулярных выражения в один (или два)
Мое первое регулярное выражение - [ \t]+
. Он делает такую очистку.
Мой второй регулярное выражение ^(?:[\t ]*(?:\r?\n|\r))+
не изображение включено, так как он не будет ничего поймать, если предыдущее регулярное выражение не запускать.
Третье регулярное выражение: ^[\s\xA0]+|[\s\xA0]+$
. Он делает такую очистку.
EDIT: Я забыл упомянуть, что в каждом случае я заменить матч ничего ""
.
EDIT 2: Я использую следующий код в Word:
With selection
Dim RegEx As Object
Set RegEx = CreateObject("VBScript.RegExp")
RegEx.Global = True
RegEx.MultiLine = True
' clean selection
RegEx.Pattern = "[ \t]+"
.Text = RegEx.Replace(.Text, " ")
RegEx.Pattern = "^(?:[\t ]*(?:\r?\n|\r))+"
.Text = RegEx.Replace(.Text, "")
' the following is from http://stackoverflow.com/a/24049145/2657875
RegEx.Pattern = "^[\s\xA0]+|[\s\xA0]+$"
.Text = RegEx.Replace(.Text, "")
End With
Вы заменяете ту же модель? Также обратите внимание, что '\ s' включает' \ x0A', вам не нужно использовать '[\ s \ xA0]', просто '\ s' достаточно. –
@ WiktorStribiżew Привет снова. Я обновил свой первый пост. – menteith
Таким образом, невозможно использовать только один экземпляр RegExp.Replace. Используйте два: 1) '^ (?: [\ T] * (?: \ R? \ N | \ r)) + | [\ t] +' заменить на 'vbCr' и 2)'^\ s + | \ s + $ 'заменить ничем. Если последнее регулярное выражение не используется с многострочной опцией, попробуйте просто использовать 'Trim()' вместо этого, и вам просто понадобится первое одиночное регулярное выражение. –