关于 RegexKitLite 换行

发布于 2024-11-24 12:07:50 字数 304 浏览 1 评论 0原文

我使用 RegexKitLite 来匹配一些文本:

xxx*[abc]*xxx

我想匹配 [abc],并使用此正则:

NSString *result = [@"xxx[ abc]xxx" stringByMatching:@"\\[(.*)?\\]" capture:1];

那么,结果是 [abc]。但是,如果其中有换行符:

xxx[ab c]xxx

不行。 我使用 ([\s\S]*),也不用数学 [abc]。 我怎样才能匹配这个文本? 谢谢

I'm use RegexKitLite to match some texts:

xxx*[abc]*xxx

and I want to match [abc],and use this regular:

NSString *result = [@"xxx[abc]xxx" stringByMatching:@"\\[(.*)?\\]" capture:1];

then, the result is [abc].But, if have linebreak in there:

xxx[ab
c]xxx

It's dosen't work.
I use ([\s\S]*), also dosen't math [abc].
How can I match this text?
thank you

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

山色无中 2024-12-01 12:07:50

默认情况下, . 不匹配新行。您可以使用

 ... stringByMatching:@"(?s:\\[(.*)?\\])" ...
//                      ^^^^           ^

或提供 RKLDotAll 选项以及 -stringByMatching:options:inRange:capture:error: 方法。

或者,您可以使用贪婪变体

@"\\[([^\\]]*)\\]"   // \[  (  [ ^\] ]  )   \]

The . does not match new lines by default. You could use

 ... stringByMatching:@"(?s:\\[(.*)?\\])" ...
//                      ^^^^           ^

or supply the RKLDotAll option with the -stringByMatching:options:inRange:capture:error: method.

Alternatively, you could use the greedy variant

@"\\[([^\\]]*)\\]"   // \[  (  [ ^\] ]  )   \]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文