我正在对某些字符串进行一些正则表达式,在我的模式中,我匹配空格\s
但是在某些字符串中我遇到了一些奇怪的空格..当转换为十六进制a0
如何将所有奇怪的空格转换为普通空格,以便可以使用regexp以及和
\s
来检测它?
当字符串显示为UTF8时,所有a0
个字符都表示为�
a03535a03832a03834a03135a02da053452e6e723aa0444ba03132a03638a03336a03933
55 82 84 15 - SE.nr: DK 12 68 36 93
答案 0 :(得分:4)
a0
代表
- 不间断的空间。
您可以将其与:
匹配[\s\xA0]
答案 1 :(得分:2)
如果使用[\s]
修饰符,则无需向\s
字符类添加不间断空格,/u
可以匹配任何Unicode空格:
'/\s/u'
请参阅regex demo
来自pcre.org:
默认的“空格”字符是HT(9),LF(10),VT(11),FF(12),CR(13)和空格(32)...... 如果使用Unicode属性支持编译PCRE,并且设置了
PCRE_UCP
选项,则会更改行为,以便使用Unicode属性来确定字符类型:< em>\s
符合\p{Z}
或\h
或\v
的任何字符
使用PCRE_UCP
修饰符启用/u
动词和Unicode语义。