2016-07-28 2 views
3

Я делаю некоторое регулярное выражение на несколько строках, и в моем шаблоне я соответствую для непечатаемых \sregepx - нечетные строки в пробелах

Но в некоторых строках я испытываю какие-то странные пространства .. При преобразовании в шестнадцатеричном a0

Как преобразовать все странные пробелы в нормальное пространство, чтобы его можно было обнаружить с помощью регулярного выражения и как , так и \s?

Когда строка представлена ​​как UTF8 все a0 символы представлены в виде

вход в HEX

a03535a03832a03834a03135a02da053452e6e723aa0444ba03132a03638a03336a03933 

ввода в виде строки

 55 82 84 15 - SE.nr: DK 12 68 36 93 
+0

обновленный qustion – clarkk

+0

Если это происходит из HTML, 'A0' is'   '... вы не можете случайно проанализировать данные из редактора WYSIWYG? – CD001

+2

Означает ли это, что вы ищете регулярное выражение для соответствия всем пробелам? Как ''/\ s/u''? –

ответ

4

a0 является представлением   - неразрывное пространство.

Вы можете сравнить его с:

[\s\xA0] 
2

Вам не нужно, чтобы добавить неразрывный пробел к классу [\s] символов, \s может соответствовать любой пробел Unicode, если вы используете /u модификатор:

'/\s/u' 

См regex demo

От pcre.org:

по умолчанию "космических" символов являются НТ (9), LF (10), ВТ (11), FF (12), CR (13), и пространство (32) ... Если PCRE скомпилирован с поддержкой свойств Unicode, а опция PCRE_UCP устанавливается, поведение изменяется таким образом, что свойства Unicode используются для определения типов символов: \s любой символ, который соответствует \p{Z} или \h или \v

Глагол PCRE_UCP и семантика Unicode активируются с помощью модификатора /u.

Смежные вопросы