用于解析“”内部字符串的正则表达式

时间:2011-06-14 12:47:08

标签: regex

<A  "SystemTemperatureOutOfSpec" >

解析“”里面的字符串的正则表达式应该是什么。在上面的示例中,它是“SystemTemperatureOutOfSpec

6 个答案:

答案 0 :(得分:1)

在JavaScript中,这个正则表达式:

/"([^"]*)"/

离。

> /"([^"]*)"/.exec('<A  "SystemTemperatureOutOfSpec" >')[1]
  "SystemTemperatureOutOfSpec"

类似的模式应该适用于许多其他编程语言。

答案 1 :(得分:0)

试试这个

string Exp = "\"!\"";

答案 2 :(得分:0)

我不确定我是否理解你的问题,但如果你需要匹配双引号之间的所有内容,请点击:/(?<=").*?(?=")/s

答案 3 :(得分:0)

(?<=<A\s")(?<content>.*)(?="\s>)

答案 4 :(得分:0)

正则表达式并不比这更容易,所以你应该能够自己解决它。以下是您如何做到这一点:

第一步是尽可能准确地定义您想要找到的内容。让我们从这开始:你想要找到一个引号,然后是一些除引号之外的字符,然后是引号。那是对的吗?如果是这样,我们的模式有三个部分:“引用”,“除引号之外的某些字符”和“引用”。

现在我们需要做的就是弄清楚这些模式的正则表达式是什么。

报价

对于“引用”,该模式实际上是"。正则表达式具有您必须注意的特殊字符(*.等)。任何不是特殊字符的东西都会匹配,"就是其中一个字符。有关您的语言的特殊字符的完整列表,请参阅文档。

报价以外的字符

现在问题是,我们如何匹配“引号以外的字符”?这听起来像一个范围。范围是方括号,带有允许字符列表。如果列表以^开头,则表示它是不允许的字符列表。我们需要除引号之外的任何字符,因此这意味着[^"]

<强> “一些”

该范围仅表示该范围内任何一个字符,但我们想要“一些”。 “一些”通常表示零或多或一或多。您可以在表达式的一部分之后放置*以表示该部分的零或更多。同样,使用+表示一个或多个(?表示零或一个)。还有其他一些变化,但这足以解决这个问题。

因此,“除引号之外的某些字符”是范围[^"](除引号之外的任何字符)后跟*(零或更多)。因此,[^"]*

全部放在一起

这很简单:只需将所有部分组合在一起。引号,后跟引号以外的一些字符,后跟引号,为"[^"]*"

捕获有趣的部分

我们现在拥有的模式将匹配您的字符串。然而,你想要的只是引号内的部分。为此,您需要一个“捕获组”,用括号表示。要捕获正则表达式的一部分,请将其放在括号中。因此,如果我们想捕获除开始和结束引用之外的所有内容,则模式将变为"([^"]*)"


这就是你学习正则表达式的方法。将问题分解为由短字符序列组成的精确语句,找出每个序列的正则表达式,然后将它们放在一起。

这个答案中的模式实际上可能不是你的完美答案。有一些边缘情况需要担心。例如,您可能只想匹配非单词字符后的引号,或仅匹配单词开头或结尾的引号。这一切都是可能的,但高度依赖于您的确切问题。弄清楚如何做到这一点同样容易 - 决定你想要什么,然后看看文档,看看如何做到这一点。

花一天时间练习正则表达式,你将永远不必要求任何人在你职业生涯的剩余时间里使用正则表达式。它们并不难,但确实需要集中研究。

答案 5 :(得分:-1)

您确定需要在此处进行正则表达式匹配吗?看看你的“字符串”你可能最好使用Xml解析器吗?