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"?>
|
||||
<!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
|
||||
|
||||
|
@ -329,12 +329,18 @@ Private Sub unicodeSymbolsConversion
|
|||
'Extended latin-1 0080—00FF
|
||||
'Cyrillic unicode block range \u0400-\u04FF
|
||||
'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
|
||||
'Latin Extended A \u0100-\u017f
|
||||
'\u02bb Modifier Letter Turned Comma is in IPH Astra
|
||||
' 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 Presentation Forms-A fb50-fdff
|
||||
'Arabic Presentation Forms-B fe70-feff
|
||||
|
@ -459,15 +465,24 @@ Sub removeAllFields()
|
|||
field = fieldEnum.nextElement()
|
||||
field.dispose()
|
||||
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
|
||||
Dim config As Object
|
||||
config = initRedactionConfiguration()
|
||||
Dim NBSP As String
|
||||
Dim space As String
|
||||
Dim latinPlusCyrillicLettersRegExp As String
|
||||
latinPlusCyrillicLettersRegExp = "[\u0041-\u005a\u0061-\u007a\u0410-\u044f]"
|
||||
|
||||
NBSP = " "
|
||||
space = " "
|
||||
'Не должно быть символов табуляции
|
||||
|
@ -484,19 +499,21 @@ Private Sub fixFrequentMistakes
|
|||
AskAndReplace("[:space:]+(?=[\.,;:?!\)\]\}»¡¿”’])","")
|
||||
'Не должно быть пробелов после скобок [({ и кавычек «„
|
||||
AskAndReplace("(?<=[\(\[\{«„])[:space:]","")
|
||||
'Между буквами среднее тире должно обрамляться пробелами
|
||||
AskAndReplace("(?<=" & latinPlusCyrillicLettersRegExp & ")–(?=" & latinPlusCyrillicLettersRegExp & ")",NBSP & "–" & NBSP)
|
||||
'Между буквами дефис-минус, цифровое тире и длинное тире заменяется на среднее тире
|
||||
AskAndReplace("(?<=" & latinPlusCyrillicLettersRegExp & "[:space:])[-‒—−](?=[:space:]" & latinPlusCyrillicLettersRegExp & ")","–")
|
||||
'Между буквами среднее или длинное тире должно быть замененено на среднее и обрамлено пробелами
|
||||
AskAndReplace("(?<=" & RX_Letters_Dash & ")[—–]+(?=.)",NBSP & "–" & NBSP)
|
||||
AskAndReplace("(?<=.)[—–]+(?=" & RX_Letters_Dash & ")",NBSP & "–" & NBSP)
|
||||
'Между буквами дефисы-минусы, цифровые тире, средние тире и длинные тире заменяются на одно среднее тире
|
||||
AskAndReplace("(?<=" & RX_Letters_Dash & "[:space:])[-‒—−–]+(?=[:space:].)","–")
|
||||
AskAndReplace("(?<=.[:space:])[-‒—−–]+(?=[:space:]" & RX_Letters_Dash & ")","–")
|
||||
'Между двумя цифрами и тире не долнжо быть пробелов. А также тире должно быть цифровым.
|
||||
'Также проверяем, что перед искомым тире нет DOI
|
||||
'''''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
|
||||
'между N. Y. не должно быть пробела
|
||||
|
|
Loading…
Add table
Reference in a new issue