.net最短字符串正则表达式

发布于 2024-11-08 02:06:29 字数 485 浏览 1 评论 0原文

如何找到最短的字符串,第一次出现它应该返回

我有这个字符串。我正在寻找 td,其值包含 blabla 并关闭 td。例如:

  <tr blabla><td>blabla big content</td></tr><tr><td>thisisnot</td></tr>

我只想要这个字符串

  <tr blabla><td>blabla big content</td></tr>

我在.net中使用这个正则表达式

<tr.*><td>blabla.*</td></tr>

我是正则表达式的新手...

任何人都可以告诉我出路吗?

How to find shortest string, first occurance it should return

I have this string. I m looking for td whose value contains blabla with closing td. For ex:

  <tr blabla><td>blabla big content</td></tr><tr><td>thisisnot</td></tr>

I want only this string

  <tr blabla><td>blabla big content</td></tr>

I m using this regex in .net

<tr.*><td>blabla.*</td></tr>

I m new to regex...

Can any one tell me the way out.

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

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

发布评论

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

评论(2

屋顶上的小猫咪 2024-11-15 02:06:29

正则表达式本质上是贪婪的 - 它会尝试匹配满足模式的最长字符串。

您需要在模式中使用非贪婪量词。因此,不要使用“*”,而是使用“*?”,然后使用分组来“捕获”匹配。通过将要捕获的组括在一组括号中来完成项目的匿名捕获。以下似乎可以解决问题:

(<tr.*?><td>blabla.*?</td></tr>).*

这将创建一个捕获组,您需要查询其正则表达式结果。

Regex is by nature greedy - it will try and match the longest string that satisfies the pattern.

You need to use non-greedy quantifier in your pattern. So instead of "*" use "*?", and then use groupings to "capture" the match. The anonymous capturing of items is done by enclosing the group you want to capture in a set of parenthesis. The following seems to do the trick:

(<tr.*?><td>blabla.*?</td></tr>).*

This will create a capture group that you will need to query the regex result for.

小巷里的女流氓 2024-11-15 02:06:29

使用 (?<=)[^<]+ 作为正则表达式,然后对匹配项进行长度比较。

Use (?<=<td>)[^<]+ as the regex, then do a length comparison on the matches.

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