如何从正则表达式捕获组中修剪空格?

2023-12-22

正在检查的字符串类似于以下内容(注意括号之间的空格):

[name]  [address ] [ zip] [ phone number ]

我现在使用的表达方式...

\[([^\])]*)\]

...成功捕获括号内的每个文本,但它也捕获前导和尾随空格,所以我最终得到:

"name"  "address "  " zip"  " phone number "

但我追求的是:

"name"  "address"  "zip"  "phone number"

如何说服正则表达式不捕获这些示例中的空格? (嵌入的空白除外 - 例如“电话号码”中单词之间的空白。)

(注意:我知道我可以从捕获的变量中修剪它after表达已经完成,但我正在尝试这样做within表达式的上下文。)

感谢您的任何想法!下面是我用来测试这个的确切代码:

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\\[([^\\])]*)\\]" options:0 error:nil];

NSString *string = @" [name] [address ] [ zip] [ phone number ] ";

NSString *modifiedString = [regex stringByReplacingMatchesInString:string options:0 range:NSMakeRange(0, [string length])
    withTemplate:@"\n\n[$1]"]; //note: adding brackets back here just to make it easy to see if the space has been trimmed properly from the captured value

NSLog(@"\n\n%@", modifiedString);

我将一步一步地完成这个过程。

首先,([^\])]*)是不正确的。这意味着“由 0 个或多个字符组成的序列,尽可能长,不包含 ] 或 )。

例如,对于这个表达式:

 [name] [address ) ] [ zip] [ phone number ] 

...地址部分将被跳过,因为“地址 )”不匹配[^\)]]*(这意味着“零个或多个字符的序列,不包括)和]”。

We want ([^\]]*)相反,这不会跳过)。

接下来,我们要吃掉捕获周围的所有空间。为此,我们使用两个 *序列,捕获的每一侧都有一个:

\[ *([^\]]*) *\]

现在我们需要变得棘手!这[^\]]*默认是贪婪的。这意味着两侧的一些空间可能与其匹配,从而包含在捕获中!我们想使用非贪婪版本,[^\]]*?, 反而。这意味着“0 个或多个字符的序列,不包含],尽可能短,同时符合正则表达式的其余部分。”

\[ *([^\]]*?) *\]

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从正则表达式捕获组中修剪空格? 的相关文章

随机推荐

  • 无法使用 a2wsgi 让 FastAPI 与 CPanel 配合使用

    似乎很多人都遇到了同样的问题 但到目前为止 它被证明是无法解决的 我希望有人能解决这个问题 我尝试在 cPanel 上运行 FastAPI 并不断收到错误 UID 1293 19858 Child process with pid 2008
  • iOS13 通过滑动(屏幕边缘)弹出视图控制器不起作用

    有正常的UINavigationController与一些堆叠UIViewController按下后 我无法使用 屏幕边缘 滑动手势返回根视图控制器 没有自定义导航栏 没有自定义后退按钮 与使用 后退 滑动手势相关的内容是否发生了变化 我知
  • 为什么这里的外部

    我这里有一个jsfiddle https jsfiddle net Lh7qbye2 7 https jsfiddle net Lh7qbye2 7 这里还有一个测试网页 https shetline com test test01 htm
  • Rx 中立即去抖

    我正在寻找一位运营商debounce一系列的事件 比如说用户的点击 输入和输出应该是这样的 interval gt lt gt lt in 1 2 3 4 5 5 6 7 8 out 1 4 这个想法就像下划线的反跳immediate op
  • 为什么可执行文件无法接收 Makefile 中导出的变量?

    我有一个 makefile 其中导出将由可执行文件接收的变量 但令人惊讶的是可执行文件没有接收导出的值 请帮我 31 test 32 echo 33 echo Testing Electric Fence 34 echo After the
  • 套接字在进程后打开,打开完成

    在服务器端关闭客户端套接字并退出应用程序后 套接字仍会打开一段时间 我可以通过netstat看到它 Every 0 1s netstat tuplna grep 6676 tcp 0 0 127 0 0 1 6676 127 0 0 1 3
  • IIS HTTP 错误 403.1 - 禁止:执行访问被拒绝

    我有一个在 IIS 6 Windows Server 2003 上运行的 ASP NET 1 1 应用程序 这是我们的应用程序 但我们正在尝试专门复制客户的安装 以便将应用程序文件夹从他们的生产服务器完全复制到我们的测试计算机上 然后我们手
  • 查找在线/离线会员总数 Discord.js

    您好 我正在执行服务器状态命令 但我不知道如何查找总成员数在线 离线所以如果有人能帮助我那就太好了 client on message message gt if message author bot return false if mes
  • Django:在现有的 html 页面上返回 StreamingHttpResponse

    由于每个问题最好有一个问题 因此如果与问题的其他部分相似 请耐心等待另一个我的问题 https stackoverflow com questions 29921085 django passing value from form to v
  • 如何在 Silverlight/WPF 中反转裁剪几何体?

    The UIElement Clip http msdn microsoft com en us library system windows uielement clip aspx属性需要一个Geometry http msdn micr
  • 拦截 GWT RequestFactory 请求

    有没有办法在客户端拦截RequestFactory请求 我想拦截这样的调用 dummyRequest dummyOperation fire new Receiver
  • QT 安装程序框架:在简介页面之前添加新的向导页面

    我想在 QT 安装程序向导的介绍页面之前添加新页面 该页面将有图像和按钮 单击按钮后 我将导航到介绍页面 我可以这样做吗 我尝试过 但没有显示 但是 如果我将其添加到其他页面之前 例如 Target Dir 它确实会显示我的页面 有人可以在
  • 大型项目的 Visual Studio 2010 C++ 链接器性能

    在我的公司 我们仍在使用 Visual Studio 2005 但正在研究 Visual Studio 2010 希望它能加快我们开发周期的某些部分 目前 我们最感兴趣的是 Visual Studio 2010 的 C 链接器的性能 在构建
  • 拥有正确的日期时间和正确的时区

    我在用feedparser为了获取RSS数据 这是我的代码 gt gt gt import datetime gt gt gt import time gt gt gt import feedparser gt gt gt d feedpa
  • 在 TypeScript 中导入 Victor.js?

    我正在尝试使用胜利者 js http victorjs org 我在 TypeScript 项目 3 0 1 中使用了一个库 尝试导入和使用它时我真的很心痛 我已经从 npm 安装了它及其类型 victor types victor 我尝试
  • 如何获取laravel Blade中唯一的小时和分钟?

    我试图在刀片中获取小时 分钟和秒 通常我使用如下 calllog delivery date 但现在我的要求是获得小时 分钟和秒 这是我试图得到的方法 calllog delivery date gt todatestring 是的 我想我
  • 如何显示本地图像直到 NetworkImage() 在 flutter 中加载?

    new CircleAvatar backgroundColor Colors black87 backgroundImage new NetworkImage url radius 45 0 我想显示本地图像CircleAvatar直到N
  • 在 Web2py Python 中格式化日期

    我正在寻找一个函数来格式化日期以获得日 月和年 日期以以下格式存储在我的数据库中 2012 09 26 如果你的目标是在web2py模板上显示 那么你必须使用纯Python来格式化 row datetime field strftime d
  • 多选列表,每个项目都有数量选项

    我的 html 页面中有一个自由文本字段 但我想用给定的字符串填充它 假设我有字符串 apple banana 和 pineapple 现在我想要一个 添加内容 按钮来打开模式框 或者如果更简单 只需将列表嵌入到我的页面中 给我一个列表 我
  • 如何从正则表达式捕获组中修剪空格?

    正在检查的字符串类似于以下内容 注意括号之间的空格 name address zip phone number 我现在使用的表达方式 成功捕获括号内的每个文本 但它也捕获前导和尾随空格 所以我最终得到 name address zip ph