在c#中找到精确的正则表达式模式的问题
本文关键字:正则表达式 模式 问题 | 更新日期: 2023-09-27 18:09:46
我发现为自己找出确切的正则表达式有点困难。我有一个文本,我必须搜索一个特定的html标签。标签就像
<snippet lang="java">some java code</snippet>
我的文本是
This is a sample text where <snippet lang="java">some java code</snippet> and other sample text where this that <snippet lang="java">some java code 2</snippet>
谁能建议我怎么写正则表达式?
你能想到的最简单的方法是:
<snippet lang="java">.*?</snippet>
您可能想要捕获组中这些标签之间包含的任何内容:
<snippet lang="java">(.*?)</snippet>
甚至可能使java
部分可变:
<snippet lang="([^"]+)">(.*?)</snippet>
PowerShell快速测试:
PS> $text = 'This is a sample text where <snippet lang="java">some java code</snippet> and other sample text where this that <snippet lang="java">some java code 2</snippet>'
PS> [Regex]::Matches($text, '<snippet lang="([^"]+)">(.*?)</snippet>')
Groups : {<snippet lang="java">some java code</snippet>, java, some java code}
Success : True
Captures : {<snippet lang="java">some java code</snippet>}
Index : 28
Length : 45
Value : <snippet lang="java">some java code</snippet>
Groups : {<snippet lang="java">some java code 2</snippet>, java, some java code 2}
Success : True
Captures : {<snippet lang="java">some java code 2</snippet>}
Index : 112
Length : 47
Value : <snippet lang="java">some java code 2</snippet>
请注意,这些都是非常基本的Regex知识(或美国大学术语中的Regex 101)。如果您需要问这样的问题,也许您应该重新考虑是否真的需要正则表达式。正如Jamie Zawinski曾经说过的:
有些人在遇到问题时,会思考"我知道,我会用正则表达式。"
现在他们有两个问题。