fix: regexps for requent mistakes
This commit is contained in:
parent
bbe0157ea2
commit
c1d12fb739
1 changed files with 30 additions and 13 deletions
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
|
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
|
||||||
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Clean" script:language="StarBasic">Sub mark88
|
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Clean" script:language="StarBasic">Sub mark90
|
||||||
|
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
@ -329,12 +329,18 @@ Private Sub unicodeSymbolsConversion
|
||||||
'Extended latin-1 0080—00FF
|
'Extended latin-1 0080—00FF
|
||||||
'Cyrillic unicode block range \u0400-\u04FF
|
'Cyrillic unicode block range \u0400-\u04FF
|
||||||
'Basic Latin \u0020-\u007E
|
'Basic Latin \u0020-\u007E
|
||||||
'Combining diacritical marks 0301 0304 0323 032e 0331 035f
|
'Combining diacritical marks 0301 0304 0303 0323 032e 0331 035f
|
||||||
|
combiningDiacritic_Astra = "\u0301\u0303\u0304\u0323\u032e\u0331\u0341\u035f"
|
||||||
|
Dim extendedLatinA_Astra As String
|
||||||
|
extendedLatinA_Astra = "\u1e15\u1e17\u1e53\u0129\u0169"
|
||||||
|
'
|
||||||
|
'
|
||||||
|
'
|
||||||
'General Punctuation \u2000-\u206f
|
'General Punctuation \u2000-\u206f
|
||||||
'Latin Extended A \u0100-\u017f
|
'Latin Extended A \u0100-\u017f
|
||||||
'\u02bb Modifier Letter Turned Comma is in IPH Astra
|
'\u02bb Modifier Letter Turned Comma is in IPH Astra
|
||||||
' unicodeConversionEverywhere("[\u0020-\u007F]+",RAtts)
|
' unicodeConversionEverywhere("[\u0020-\u007F]+",RAtts)
|
||||||
unicodeConversionEverywhere("[\u0020-\u007f\u0080-\u00ff\u0400-\u04ff\u2000-\u206f\u2100-\u214f\u0301\u0304\u0323\u032e\u0331\u0341\u035f\u02bb\u0100-\u017f]+",RAtts)
|
unicodeConversionEverywhere("[\u0020-\u007f\u0080-\u00ff\u0400-\u04ff\u2000-\u206f\u2100-\u214f\u02bb\u0100-\u017f" & combiningDiacritic_Astra & extendedLatinA_Astra &"]+",RAtts)
|
||||||
'Arabic Scheherazade
|
'Arabic Scheherazade
|
||||||
'Arabic Presentation Forms-A fb50-fdff
|
'Arabic Presentation Forms-A fb50-fdff
|
||||||
'Arabic Presentation Forms-B fe70-feff
|
'Arabic Presentation Forms-B fe70-feff
|
||||||
|
@ -459,15 +465,24 @@ Sub removeAllFields()
|
||||||
field = fieldEnum.nextElement()
|
field = fieldEnum.nextElement()
|
||||||
field.dispose()
|
field.dispose()
|
||||||
Wend
|
Wend
|
||||||
End sub
|
End Sub
|
||||||
|
|
||||||
|
Public Const RX_Greek_letters = "\u0388-\u03ce"
|
||||||
|
Public Const RX_Latin_up_alphabet = "\u0041-\u005a"
|
||||||
|
Public Const RX_Latin_low_alphabet = "\u0061-\u007a"
|
||||||
|
Public Const RX_Cyrillic_alphabet = "\u0410-\u044f"
|
||||||
|
Public Const RX_Comma = "\u002c"
|
||||||
|
Public Const RX_Digits = "\u0030-\u0039"
|
||||||
|
Public Const RX_Roman_numbers = "MDCLXVI"
|
||||||
|
Public Const RX_Letters_Dash = "[" & RX_Latin_up_alphabet & RX_Latin_low_alphabet & RX_Cyrillic_alphabet & RX_Greek_letters & "]"
|
||||||
|
Public Const RX_Letters = "[" & RX_Latin_up_alphabet & RX_Latin_low_alphabet & RX_Cyrillic_alphabet & RX_Greek_letters & "]"
|
||||||
|
|
||||||
Private Sub fixFrequentMistakes
|
Private Sub fixFrequentMistakes
|
||||||
Dim config As Object
|
Dim config As Object
|
||||||
config = initRedactionConfiguration()
|
config = initRedactionConfiguration()
|
||||||
Dim NBSP As String
|
Dim NBSP As String
|
||||||
Dim space As String
|
Dim space As String
|
||||||
Dim latinPlusCyrillicLettersRegExp As String
|
|
||||||
latinPlusCyrillicLettersRegExp = "[\u0041-\u005a\u0061-\u007a\u0410-\u044f]"
|
|
||||||
NBSP = " "
|
NBSP = " "
|
||||||
space = " "
|
space = " "
|
||||||
'Не должно быть символов табуляции
|
'Не должно быть символов табуляции
|
||||||
|
@ -484,19 +499,21 @@ Private Sub fixFrequentMistakes
|
||||||
AskAndReplace("[:space:]+(?=[\.,;:?!\)\]\}»¡¿”’])","")
|
AskAndReplace("[:space:]+(?=[\.,;:?!\)\]\}»¡¿”’])","")
|
||||||
'Не должно быть пробелов после скобок [({ и кавычек «„
|
'Не должно быть пробелов после скобок [({ и кавычек «„
|
||||||
AskAndReplace("(?<=[\(\[\{«„])[:space:]","")
|
AskAndReplace("(?<=[\(\[\{«„])[:space:]","")
|
||||||
'Между буквами среднее тире должно обрамляться пробелами
|
'Между буквами среднее или длинное тире должно быть замененено на среднее и обрамлено пробелами
|
||||||
AskAndReplace("(?<=" & latinPlusCyrillicLettersRegExp & ")–(?=" & latinPlusCyrillicLettersRegExp & ")",NBSP & "–" & NBSP)
|
AskAndReplace("(?<=" & RX_Letters_Dash & ")[—–]+(?=.)",NBSP & "–" & NBSP)
|
||||||
'Между буквами дефис-минус, цифровое тире и длинное тире заменяется на среднее тире
|
AskAndReplace("(?<=.)[—–]+(?=" & RX_Letters_Dash & ")",NBSP & "–" & NBSP)
|
||||||
AskAndReplace("(?<=" & latinPlusCyrillicLettersRegExp & "[:space:])[-‒—−](?=[:space:]" & latinPlusCyrillicLettersRegExp & ")","–")
|
'Между буквами дефисы-минусы, цифровые тире, средние тире и длинные тире заменяются на одно среднее тире
|
||||||
|
AskAndReplace("(?<=" & RX_Letters_Dash & "[:space:])[-‒—−–]+(?=[:space:].)","–")
|
||||||
|
AskAndReplace("(?<=.[:space:])[-‒—−–]+(?=[:space:]" & RX_Letters_Dash & ")","–")
|
||||||
'Между двумя цифрами и тире не долнжо быть пробелов. А также тире должно быть цифровым.
|
'Между двумя цифрами и тире не долнжо быть пробелов. А также тире должно быть цифровым.
|
||||||
'Также проверяем, что перед искомым тире нет DOI
|
'Также проверяем, что перед искомым тире нет DOI
|
||||||
'''''AskAndReplace("(?<!DOI[0-9. /XVI:-‒–—−-]{1,50})(?<=[:digit:])(?:[:space:])?[-‒–—−](?:[:space:])?(?=[:digit:])","‒")
|
'''''AskAndReplace("(?<!DOI[0-9. /XVI:-‒–—−-]{1,50})(?<=[:digit:])(?:[:space:])?[-‒–—−](?:[:space:])?(?=[:digit:])","‒")
|
||||||
'Между двумя римскими цифрами и тире между ними не долнжо быть пробелов. А также тире должно быть средним
|
'Между двумя римскими цифрами и тире между ними не долнжо быть пробелов. А также тире должно быть средним
|
||||||
AskAndReplace("(?<=[MDCLXVI])(?:[:space:])?[-‒–—−](?:[:space:])?(?=[MDCLXVI])","–")
|
AskAndReplace("(?<=[" & RX_Roman_numbers & "])(?:[:space:])?[-‒–—−]+(?:[:space:])?(?=[" & RX_Roman_numbers & "])","–")
|
||||||
'Между буквой и угловой открывающейся скобкой должен быть пробел
|
'Между буквой и угловой открывающейся скобкой должен быть пробел
|
||||||
AskAndReplace("(?<=" & latinPlusCyrillicLettersRegExp & ")<(?=…>)",space & "<")
|
AskAndReplace("(?<=" & RX_Letters & ")<(?=…>)",space & "<")
|
||||||
'Между угловой закрывающейся скобкой и буквой должен быть пробел
|
'Между угловой закрывающейся скобкой и буквой должен быть пробел
|
||||||
AskAndReplace("(?<=<…)>(?=" & latinPlusCyrillicLettersRegExp & ")",">" & space)
|
AskAndReplace("(?<=<…)>(?=" & RX_Letters & ")",">" & space)
|
||||||
|
|
||||||
If config.getPropertyValue("fixes_russian_iph") = "true" Then
|
If config.getPropertyValue("fixes_russian_iph") = "true" Then
|
||||||
'между N. Y. не должно быть пробела
|
'между N. Y. не должно быть пробела
|
||||||
|
|
Loading…
Add table
Reference in a new issue