如何在正则表达式中替换转义字符?
题
我又一次撞到了墙上。
如何使用正则表达式替换转义字符? 如果制表符(\ t)出现两次以上,我想用单个\ t替换那两个或多个出现。 例如,如果\ t \ t \ t \ t来,那么我只想用\ t替换它。 怎么做?
我在阅读文本文件和应用正则表达式时遇到了另外一个问题。
我正在使用C#来读取文本文件和正则表达式。 当我打开文本文件(具有txt扩展名的文件)时,我得到了正常的文件视图。但是当我使用“textReader”读取相同的文件时并将其存储到字符串中,我得到这样的文字:
O K \ t \ t \ t \ t \ t \ t电子邮箱:
k.o@gmail.com \ r电话:+ 91
992 \ t \ r \ n经验摘要
\ rBusiness Intelligence和数据
仓库设计师超过6个 多年的OLAP工作经验 项目。\ r \ r \ r \ r \ r \ r技术\ rBelow是一个
重要软件产品列表
和我工作的工具
用。\ r \ rSoftware结果 产品\ r \ A \ r \ aOperating结果 系统:\ rWINDOWS NT,WINDOWS 2000,
UNIX \ rDatabase管理
系统:\ rOracle 8i,Oracle 9i,Oracle
10g,SQL-Server 7.0,DB2 \ rSoftware
套餐:\ rVSS,ER Win,M1 \ rFourth
生成语言:\ rPL / SQL,
SQL * PLUS \ rTools&
技术:\ rOracle Warehouse
Builder 10.1.0.4.0,ORACLE 9i AS,
ORACLE Discoverer报告数据阶段
8.0,Fast Track 8.5,DB @ Cube,JavaScript,JSP,JDEV,BI BEANS,ASP,
ASP.NET,Ab
从头\ r \ r \ A \ r \一符\ v \ r \ r \ fAssignments \ rThe结果 各种作业的详细信息
我已经处理过,这里列出了,
按时间顺序排列 订单。\ r \ n \ r \ n \ r \ aAven Dennison数据
仓储\ r \ A \ r \ aClient \ r \ aAvery结果 丹尼森,他在项目中挑战
是从现有的EDW喂EDW 在
中有数据的仓库 汇总结果 等级。\ r \ a \ r \ a \ r \ n \ r \ n \ r \ n \ r \ n \ r \ a \ a \ nA BI BI (Omniture)\ rite团队。设计,结果 编码和测试以及
与现场团队协调。
\ r \ a \ r \ aTools&技术\ r \ aUnix结果 平台,Oracle 10g,Py。不仅仅是
提供正确的要求但是
表现也必须在
中 可以接受的结果 范围。\ r \一个\ r \一个\ r \ r \ r \ r \ r \ r \ r \ r \ r \ r \ r \ RNAME \ r \ AAIW结果 事件(ABSA)\ r \ a \ r \ aClient \ r \ aABSA,
南非\ r \ a \ r \ aP
即,所有转义字符如\ s,\ r,\ f都是可见的。因此,当我将相同的文本读入字符串变量时,使用普通文本的正则表达式不起作用。
任何人都知道如何解决这个问题?
由于
我还有一个查询。我想匹配行尾的文字。我试图用$来做这件事。例如,为了匹配以“赋值”结尾的文本,我使用正则表达式赋值$。它使用普通文本。但是当我在streamreader给出的文本上运行这个regx时,这个正则表达式不起作用。流阅读器提供了像Assignments \ r \ n \ r \ f这样的字符串。如何将行尾或行首与这种文本匹配?
解决方案
您正在尝试匹配字符串" \ r"
,对吧?你必须逃脱转义角色才能做到这一点:
"(\\r)*"
此表达式将匹配" \ r"
任意次。它的工作原理是因为" \\"
转义为文字" \ _"
。您也可以应用相同的想法来匹配" \ t"
。
其他提示
/\t{2,}/\t/
用一个字符替换两个或多个标签。
对于tab char,请使用以下内容:
/(\t)*/\1/g
- 使用一个字符(标签字符串)创建一个组,并尽可能地匹配它。
- 将完整匹配替换为单个字符
- (全局)使用该模式作为全文。 醇>
然后,您可以对要替换的其他转义字符使用相同的表达式。
您可以将 \\ t \\ t \\ t
替换为 \\ t {3}