1

这是我试图在文本文件中识别的字符串。文本文件有一个我需要在每一行中提取的特定字段。前任:

Field1 = This is the content for field 1
Field2 = This is the content for field 2
Field3 = This is the content for field 3, which is = to 4445

假设我想在第一个“=”符号之后提取 field3 的内容。如何获得该内容“这是字段 3 的内容,即 = 到 4445”,包括第二个“=”符号但不包括第一个。我只是进入正则表达式,所以我没有太多经验。这是我尝试过的:

=.*

但这将打印第一个“=”符号及其之后的所有内容。我想省略第一个 = 符号。

同样,在没有第一个“=”符号的情况下获得“Field3”的正则表达式是什么?我知道我可以根据第一个等号分割线,但我真的需要用正则表达式来做。谢谢

4

3 回答 3

5
.*?=\s*(.*)

正则表达式可视化

调试演示

  • .表示除换行符以外的所有字符
  • +表示该字符的另一个
  • ()表示捕获组
  • *表示零个或多个
  • \s表示空白
  • *?零个或多个 a(懒惰)

将其从捕获组中提取出来。它应该在您的第一个捕获组中。请记住,整个数组都存储在0match 的索引中。

var match = myRegexp.exec(input);
alert(match[1]);

请在此处阅读有关正则表达式的更多信息并使用debugexx.com进行实验。

于 2013-09-17T18:20:25.603 回答
2

您将不得不使用捕获组。有点像这样的东西:

str.match(/=\s*(.*)$/)[1];

或者你这样做:

res = str.match(/=\s*(.*)$/);
console.log(res[1]);

如果你想要一个“更安全”的正则表达式,你可以试试这个:

str.match(/^[^=]+=\s*(.*)$/);

^匹配行首;

[^=]+匹配除等号以外的任何字符;

=然后将匹配第一个等号;

(.*)$将捕获第一个等号之后直到字符串结尾的所有内容。

于 2013-09-17T18:19:01.033 回答
0

只匹配Field3你可以使用前瞻断言:

str.match(/Field3(?=\s*=)/);

Field3如果它后面跟着等号,这将匹配,但不会在匹配字符串中包含等号。

于 2013-09-17T18:25:16.107 回答