【问题标题】:How to match all characters (as few as possible) between two strings?如何匹配两个字符串之间的所有字符(尽可能少)?
【发布时间】:2019-02-27 12:06:36
【问题描述】:

我正在尝试编写一个匹配以(* 开头并以*) 的第一次出现结束的评论的正则表达式

(* comment *)

从关于括号之间匹配的堆栈溢出的其他帖子中,我将以下正则表达式放在一起。

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

只要评论中没有 *) 字符,此方法就有效。但是,我想在评论中允许这些字符,只要它们不相邻。

以下都是有效的cmets。

(*****)

(*()*)

(*)(*()**)

一个值得注意的无效评论是

(*)

我尝试了一些使用前瞻的东西,但无济于事。指向正确方向的指针将不胜感激。

【问题讨论】:

  • 请说明您使用的正则表达式引擎。索罗金?带有较新 Delphi 的一个软件包?
  • 你不能用\(\*(.*)\*\)吗?还是太天真了?
  • @Marco 我们可以关闭这个重复的问题吗?
  • @mickmackusa:投票。

标签: regex comments pascal


【解决方案1】:

试试这个

匹配任何包含左括号后跟任意字符任意次数后跟右括号的字符串

\(\*.+\*\)

【讨论】:

  • 但是(**) 也是一个有效(但为空)的评论,那么为什么不只是\(\*(.*)\*\)(.*) 部分捕获评论的内容。
猜你喜欢
  • 1970-01-01
  • 2011-08-31
  • 1970-01-01
  • 2014-04-27
  • 2018-07-28
  • 1970-01-01
相关资源
最近更新 更多