我发现很难为自己搞清楚正确的正则表达式。 我有一个文本,我必须搜索特定的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>
任何人都可以建议我如何为此编写正则表达式?
答案 0 :(得分:2)
你能想出的最微不足道的是:
<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 101(大学?)用语)。如果您需要提出这样的问题,也许您应该重新考虑是否确实需要正则表达式。正如Jamie Zawinski曾经指出的那样:
有些人在面对问题时会思考 “我知道,我会使用正则表达式。” 现在他们有两个问题。