首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匹配1或更少的量词

匹配1或更少的量词
EN

Stack Overflow用户
提问于 2014-07-15 18:06:58
回答 2查看 71关注 0票数 0

我有一行文本,其中包含几个倾斜字符(~)。在这个场景中,我正在处理一串数据,这是一个报告。每一个倾斜表示一个线的中断/回车。我需要做的是只匹配单个倾斜体(这样我就可以将它们转换为空格)。我想让多个倾斜体组保持原样。我能够匹配多个倾斜体的组(使用~{2,}),但是,我基本上需要匹配与之相反的组。

下面是我试图修改的文本示例:

结果:血管: IVC~,门静脉正常。主动脉口径正常,无动脉瘤。

在这个例子中,我想匹配不属于一组其他倾斜体的所有3个倾斜体。“真实世界”数据将包含许多倾斜体--其中一些可能位于字符串的开头和/或末尾。它们可能被空格或字符所包围。

提前感谢您的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-15 18:57:27

代码语言:javascript
复制
set new [regsub -all {(^|[^~])~([^~]|$)} $str {\1 \2}]

现在我有时间了,有些话要说。

我们要找的是一个没有倾斜的倾斜体,后面没有倾斜的倾斜体。我们可以试试这个:{[^~]~[^~]}正是这样做的。但是,这个表达式需要在前面和后面都有一个字符:如果我们要寻找的单个倾斜点发生在行的开头或结尾,怎么办?所以,我们想:

  • 字符串或非倾斜字符(^|[^~])的开头,后面跟着
  • 一种趋势,然后是
  • 非倾斜字符或字符串([^~]|$)的结尾.

我们需要使用捕获括号来记住我们要转换成空格的倾斜之前和之后发生了什么字符,所以替换的字符串是{\1 \2} == --第一组括号捕获的字符,然后是空格,然后是第二组括号捕获的字符。

我们Tcl用户是幸运的,有正则引擎,我们有。它具有很高的表现力和非常丰富的功能。

票数 2
EN

Stack Overflow用户

发布于 2014-07-15 18:21:57

编辑:没有意识到TCL不允许查找。格伦的回答似乎涵盖了这个问题。

你可以试试这个。只需使用负后视和向前看,以确保倾斜之前或后面没有另一个倾斜。

代码语言:javascript
复制
(?<!~)~(?!~)

测试这里

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24765170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档