/ / Usuń białe spacje między literami [A-Za-z] - r, regex

Usuń białe spacje między literami [A-Za-z] - r, regex

Jak usunąć białe spacje między literami NIE liczbami

Na przykład:

Wkład

I ES P 010 000 000 000 000 000 001 001 000 000 IESP 000 000

Wydajność

IESP 010 000 000 000 000 000 001 001 000 000 IESP 000 000

Próbowałem czegoś takiego

gsub("(?<=\b\w)\s(?=\w\b)", "", x,perl=T)

Ale nie udało mi się dotrzeć do wyjścia, na które liczyłem

Odpowiedzi:

3 dla odpowiedzi № 1

Musisz użyć

Input <- "I ES P E ES P 010 000 000 000 000 000 001 001 000 000 IESP 000 000"
gsub("(?<=[A-Z])\s+(?=[A-Z])", "", Input, perl=TRUE, ignore.case = TRUE)
## gsub("(*UCP)(?<=\p{L})\s+(?=\p{L})", "", Input, perl=TRUE) ## for Unicode

Zobacz R demo online i a regex demo.

UWAGA: The ignore.case = TRUE sprawi, że wzorzec wzorca jest niewrażliwy, jeśli nie jest oczekiwany, usuń ten argument.

Detale

  • (?<=[A-Z]) (lub (?<=p{L})) - litera musi pojawić się natychmiast po lewej stronie bieżącej lokalizacji (bez dodawania jej do meczu)
  • \s+ - 1 lub więcej białych znaków
  • (?=[A-Z]) (lub (?=\p{L})) - litera musi pojawić się natychmiast po prawej stronie bieżącej lokalizacji (bez dodawania jej do meczu).

6 dla odpowiedzi nr 2

Posługiwać się gsub aby zastąpić białe znaki " " z niczym "" między literami, a następnie wróć zastępczy i litery.

Input <- "I ES P 010 000 000 000 000 000 001 001 000 000 IESP 000 000"
gsub("([A-Z]) ([A-Z])", "\1\2", Input)
[1] "IESP 010 000 000 000 000 000 001 001 000 000 IESP 000 000"

Edytuj po @Wiktor Stribiżew komentarz (zastąpiony [A-z] do [a-zA-Z]):

Do stosowania w przypadku małych i dużych liter [a-zA-Z]

Input <- "I ES P 010 000 000 000 000 000 001 001 000 000 IESP 000 000 aaa ZZZ"
gsub("([a-zA-Z]) ([a-zA-Z])", "\1\2", Input)
[1] "IESP 010 000 000 000 000 000 001 001 000 000 IESP 000 000 aaaZZZ"