Javascript 如何选择此正则表达式中的最后一个组?

Javascript 如何选择此正则表达式中的最后一个组?,javascript,regex,Javascript,Regex,我想选择{}中包含的最后一个组,但一旦我开始在正则表达式末尾键入\s,它就不再选择第二行了。有人能给我解释一下吗 正则表达式: \s*(.{10})\s*(\d*)\s*(.{3})\s*(.*?)(\((?>\((?<c>)|[^()]+|\))\))\s\{(.*)\} 以下是我正在尝试做的事情的链接: 谢谢 更新 我所期望的是这里发生的事情: 在“$#*!我爸爸说”然后前两个系列的名字,它抓住了正确的组。但在那之后不知怎么搞砸了,我不知道该怎么解决 “它不再选择第二行

我想选择
{}
中包含的最后一个组,但一旦我开始在正则表达式末尾键入
\s
,它就不再选择第二行了。有人能给我解释一下吗

正则表达式:

\s*(.{10})\s*(\d*)\s*(.{3})\s*(.*?)(\((?>\((?<c>)|[^()]+|\))\))\s\{(.*)\}
以下是我正在尝试做的事情的链接:

谢谢


更新 我所期望的是这里发生的事情: 在
“$#*!我爸爸说”
然后前两个系列的名字,它抓住了正确的组。但在那之后不知怎么搞砸了,我不知道该怎么解决

“它不再选择第二行。”

所有这些都在一条线上。有些行末尾包含
{text}
,有些行不包含

它出现在Regex101上,好像
{text}
在第二行

试试这个:

\s*(.{10})\s*(\d+)\s*(\d+.\d+)\s*("[^"]+")\s*(\(\d+\))\s*({[^{]+})?
演示:

“它不再选择第二行。”

所有这些都在一条线上。有些行末尾包含
{text}
,有些行不包含

它出现在Regex101上,好像
{text}
在第二行

试试这个:

\s*(.{10})\s*(\d+)\s*(\d+.\d+)\s*("[^"]+")\s*(\(\d+\))\s*({[^{]+})?
演示:


您的正则表达式不包含第2行,因为它不包含
{.*}
类型的内容。如果您使用以下示例尝试正则表达式:

0.00002211      55   7.7  "'Allo 'Allo!" (1982) {A Bun in the Oven (#8.0)}
0...222.02      14   6.7  "$100 Taxi Ride" (2001) {9}
这将需要{}中包含的9。如果希望选择{}可选,则应使用

\s*(.{10})\s*(\d*)\s*(.{3})\s*(.*?)(\((?>\((?<c>)|[^()]+|\))\))(?:\s(\{(.*)\}))?
\s*(.{10})\s*(\d*)\s*(.{3})\s*(.*)(\((?>\(?)|[^()]+|\)\)(?:\s(\{(.*)\))?

您的正则表达式不包含第2行,因为它不包含
{.*}
类型的内容。如果您使用以下示例尝试正则表达式:

0.00002211      55   7.7  "'Allo 'Allo!" (1982) {A Bun in the Oven (#8.0)}
0...222.02      14   6.7  "$100 Taxi Ride" (2001) {9}
这将需要{}中包含的9。如果希望选择{}可选,则应使用

\s*(.{10})\s*(\d*)\s*(.{3})\s*(.*?)(\((?>\((?<c>)|[^()]+|\))\))(?:\s(\{(.*)\}))?
\s*(.{10})\s*(\d*)\s*(.{3})\s*(.*)(\((?>\(?)|[^()]+|\)\)(?:\s(\{(.*)\))?

使用带有预期输出的示例输入更新您的问题。为什么不呢?你的问题不清楚。让我的问题更清楚,如果我能做些什么让它更清楚,请问我你已经可以看到你的正则表达式在“SpongeyLeaks”上失败了,因为你的格式不一致。用示例输入和预期输出更新你的问题。为什么不呢?你的问题不清楚。让我的问题更清楚,如果我能做点什么让它更清楚,问我你已经可以看到你的正则表达式在“SpongeyLeaks”方面失败了,因为你的格式不一致。你实际上改变了什么?含义是什么?你实际上改变了什么含义?含义是什么?谢谢!这很有效。我对正则表达式都是新手,所以有时候有点难。感谢您的时间和投入!现在我有一个小问题,希望你也能解决这个问题,它现在返回空值,而不是空值。我正在为使用.csv文件的数据库制作一个解析器。在一些书名中有,包括。但是现在我不能使用.replaceAll(“,”,“)方法。因为有空指针。那么,当它找不到任何内容时,是否可以只生成一个空字符串?您可以有选择地仅对那些不为null的条目使用
replaceAll
,或者将所有输入null条目替换为空字符串。我不知道你用的是什么平台,但使用简单的excel非常简单。事实上,你可以直接使用
\s*({10})\s*(\d*)\s*({3})\s*(.*)(\(((?>\((?)|[^()]+|\)\(?:\s\{(.*))\
谢谢!这很有效。我对正则表达式都是新手,所以有时候有点难。感谢您的时间和投入!现在我有一个小问题,希望你也能解决这个问题,它现在返回空值,而不是空值。我正在为使用.csv文件的数据库制作一个解析器。在一些书名中有,包括。但是现在我不能使用.replaceAll(“,”,“)方法。因为有空指针。那么,当它找不到任何内容时,是否可以只生成一个空字符串?您可以有选择地仅对那些不为null的条目使用
replaceAll
,或者将所有输入null条目替换为空字符串。我不知道你用的是什么平台,但使用简单的excel非常简单。事实上,你可以只使用
\s*({10})\s*(\d*)\s*({3})\s*(.*)(\(((?>\((?)|[^()]+|\)\(?:\s\{(.*))\)(?:\s\{(.\)\)\)