在第一个等号处分隔字符串的javascript正则表达式

在第一个等号处分隔字符串的javascript正则表达式,javascript,regex,Javascript,Regex,下面是我试图在文本文件中识别的字符串。文本文件的每一行都有一个我需要提取的特定字段。例: 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,包括第二个=符号,但不

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

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,包括第二个=符号,但不是第一个。 我刚刚开始学习正则表达式,所以我没有太多经验。以下是我尝试过的:

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


同样,如果没有第一个=符号,regexp将获得Field3什么?我知道我可以根据第一个等号分割线,但我真的需要使用regexps。谢谢

您必须使用捕获组。有点像这样:

str.match(/=\s*(.*)$/)[1];
或者你会:

res = str.match(/=\s*(.*)$/);
console.log(res[1]);
如果您想要“更安全”的正则表达式,可以尝试以下方法:

str.match(/^[^=]+=\s*(.*)$/);
^匹配行的开头

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

=然后将匹配第一个等号


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

您必须使用捕获组。有点像这样:

str.match(/=\s*(.*)$/)[1];
.*?=\s*(.*)
或者你会:

res = str.match(/=\s*(.*)$/);
console.log(res[1]);
如果您想要“更安全”的正则表达式,可以尝试以下方法:

str.match(/^[^=]+=\s*(.*)$/);
^匹配行的开头

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

=然后将匹配第一个等号

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

.*?=\s*(.*)
. 表示除换行符以外的所有字符 +意味着再多一个那个角色 表示捕获组 *表示零或更多 \s表示空白 *? 零个或多个a表示懒惰 从捕获组中提取它。它应该在您的第一个捕获组中。请记住,整个数组存储在匹配的0索引中

var match = myRegexp.exec(input);
alert(match[1]);
请阅读更多关于和用于实验的信息

. 表示除换行符以外的所有字符 +意味着再多一个那个角色 表示捕获组 *表示零或更多 \s表示空白 *? 零个或多个a表示懒惰 从捕获组中提取它。它应该在您的第一个捕获组中。请记住,整个数组存储在匹配的0索引中

var match = myRegexp.exec(input);
alert(match[1]);
请阅读更多关于和用于实验的信息

要仅匹配字段3,您可以使用前瞻断言:

str.match(/Field3(?=\s*=)/);
如果字段3后跟等号,则该字段应与字段3匹配,但不包括匹配字符串中的等号。

要仅与字段3匹配,您可以使用前瞻断言:

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


如果字段3后跟等号,则该字段应与字段3匹配,但不会在匹配字符串中包含等号。

您的解决方案将打印第二个=号之后的所有内容。如果我给它Field3=这是Field3=3,它将只打印3个debugx是在非常大的表达式上做图形换行还是一个巨大的png文件?或者,它可以垂直旋转并格式化吗?@sln不,您不能更改图形表示的方式。这也可以,Field3部分呢?你将如何提取?我尝试了Field3?==,但只有当Field3在=符号之间有空格时,这才有效。如果我做Field3=3,这就是Field3=3。这是行不通的。@JuanCarlos它好像行得通。。。您的解决方案打印第二个=符号后的所有内容。如果我给它Field3=这是Field3=3,它将只打印3个debugx是在非常大的表达式上做图形换行还是一个巨大的png文件?或者,它可以垂直旋转并格式化吗?@sln不,您不能更改图形表示的方式。这也可以,Field3部分呢?你将如何提取?我尝试了Field3?==,但只有当Field3在=符号之间有空格时,这才有效。如果我做Field3=3,这就是Field3=3。这是行不通的。@JuanCarlos它好像行得通。。。我在一个在线正则表达式测试中尝试了这一点,但它不起作用。你知道为什么吗?这是我正在使用的网站@JuanCarlos It's okay:你如何获得Field3部分?@JuanCarlos查看上面正则表达式的示例代码。我在一个在线正则表达式测试中尝试了这一点,但它不起作用。你知道为什么吗?这是我正在使用的网站@JuanCarlos没关系:你如何获得Field3部分?@JuanCarlos查看上面正则表达式的示例代码。你如何使它与Field3=这是Field3=3一起工作。字段3=这是字段3=3。有时我拥有的文本文件在=符号之间没有空格。有什么想法吗?你怎么能让它与任何一个字段3=一起工作?这是字段3=3。字段3=这是字段3=3。有时我拥有的文本文件在=符号之间没有空格。有什么想法吗?