正则表达式汉字怎么表示 java正则表达式详解

网络上的一些文本,部分会有一些不必要的空格,如果想把空格全部替换掉,使用字符串string类的replace()方法即可,如:
str = str.replace(‘ ‘,”)
但如果是中英文混排的文本,如果想替换掉汉字中间的空格,而保留英文单词之间的空格,则问题的解决要复杂一些 。需要用到正则表达式 。
如有以下文档:

正则表达式汉字怎么表示 java正则表达式详解

文章插图
正则表达式汉字怎么表示 java正则表达式详解

文章插图
正则表达式汉字怎么表示 java正则表达式详解

文章插图
正则表达式汉字怎么表示 java正则表达式详解

文章插图
正则表达式汉字怎么表示 java正则表达式详解

文章插图
正则表达式汉字怎么表示 java正则表达式详解

文章插图
正则表达式汉字怎么表示 java正则表达式详解

文章插图
正则表达式汉字怎么表示 java正则表达式详解

文章插图
常用正则表达式,可以总结一下:
?匹配零次或一次前面的分组 。
*匹配零次或多次前面的分组 。
+匹配一次或多次前面的分组 。
{n}匹配n 次前面的分组 。
{n,}匹配n 次或更多前面的分组 。
{,m}匹配零次到m 次前面的分组 。
{n,m}匹配至少n 次、至多m 次前面的分组 。
{n,m}?或*?或+?对前面的分组进行非贪心匹配 。
^spam 意味着字符串必须以spam 开始 。
spam$意味着字符串必须以spam 结束 。
.匹配所有字符,换行符除外 。
d、w 和s 分别匹配数字、单词和空格 。
D、W 和S 分别匹配出数字、单词和空格外的所有字符 。
[abc]匹配方括号内的任意字符(诸如a、b 或c) 。
[^abc]匹配不在方括号内的任意字符 。
字符|称为“管道” 。希望匹配许多表达式中的一个时,就可以使用它 。例如,正则表达式r’Batman|Tina Fey’将匹配’Batman’或’Tina Fey’ 。
正则表达式以外的其它补充:
字符串的strip()方法:可以删除掉字符串首尾两端的空格,包括n,还可以删除掉首尾两端的指定字符,形式如strip([str]) 。strip()方面的功能可以分解为lstrip()和rstrip() 。
附代码:
import re
f0 = open(‘new.txt’,’w’,encoding=”UTF-8″)
#处理文本中的空格,只要含有“英文+空格+英文”就不处理
pattern =re.compile(u”[a-zA-Z]+s+[a-zA-Z]+”)
with open(‘text.txt’, ‘rU’) as file:
….strs = file.read()
….entxt = re.findall(pattern,strs)
if (not entxt):
”’
….s = s.replace(‘.’ , ‘ 。’)
….s = s.replace(‘,’ , ‘,’)
….s = s.replace(‘!’ , ‘!’)
….s = s.replace(‘?’ , ‘?’)
….”’
….s = strs.replace(‘ ’,”) # 处理全角空格
….s = s.replace(‘ ‘ , ”) # 处理半角空格(全中文可以使用)
….f0.write(s)
….f0.close()
else:
….pattern =re.compile(r'([u4e00-u9fa5,]{1})s+([u4e00-u9fa5,]{1})’)
….with open(‘text.txt’, ‘rU’) as f2:
……..str = f2.readline()
……..while str: # readline()方法读到最后会返回一个空字符
…………s = str.replace(‘ ’,”) # 处理全角空格
…………s = pattern.sub(r’12’, str)
…………s = s.strip() + “n” # strip()方法会把尾端的n也去掉
…………f0.write(s)
…………str = f2.readline() # readline()方法每次只读取一行
….f0.close() # 如果不是使用上面的with方法,需要close()后文档才会写入nex.tx
【正则表达式汉字怎么表示 java正则表达式详解】-End-

    推荐阅读