javascript - 如何处理正则表达式中的可选组并删除结果的尾随空格

标签 javascript regex

我正在尝试提取字符串和可选括号的内容,但我不知道如何处理可选括号:

lorem, ipsum
lorem ipsum
lorem, ipsum (X123), 
lorem ipsum (X.12), 
lorem ipsum    (X.12), 
lorem ipsum (X1)

我正在尝试使用正则表达式 /(.*)\((.*?)\)/gm ,但这不会处理前两行。对于前两行,第二组的结果为空。 另外我想去掉文本结果的尾随空格。

预期结果应该是lorem ipsumlorem, ipsum对于第一组和X123/X.12/X1对于第二组。

https://regex101.com/r/ZcCLCL/2

最佳答案

您可以使用正则表达式 /^(.+?)\s*(?:\((.+?)\))?[,\s]*$/

解释:

^   beginning of line
 (.+?)   lazily capture one or more characters
      \s*   zero or more spaces
         (?:   begin unnamed capturing group
            \(   literal parenthesis
              (.+?)   lazily capture one or more of any character
                   \)   literal parenthesis
                     )?   end unnamed capturing group and make it optional
                       [,\s]*   zero or more spaces or commas
                             $   end of line

const pattern = /^(.+?)\s*(?:\((.+?)\))?[,\s]*$/gm;

const s= `lorem, ipsum
lorem ipsum
lorem, ipsum (X123), 
lorem ipsum (X.12), 
lorem ipsum    (X.12), 
lorem ipsum (X1)`;

for (let m; m = pattern.exec(s); console.log(m));

关于javascript - 如何处理正则表达式中的可选组并删除结果的尾随空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56959162/

相关文章:

python - 根据一组特定的单词拆分字符串

javascript - 在 JavaScript 中的另一个函数中定义一个函数

JavaScript字符串压缩+PHP解压

javascript - 使用 React 删除表中的项目后重新加载表

ruby - 捕获多个匹配项的最佳方法

javascript - 如何使用正则表达式获取特定字符后的所有数字

Javascript函数不改变颜色,还需要一个正则表达式来识别更多的字符

javascript - Gulp sass 编译在启动时正常工作。但是,更改的文件将被排除

javascript - 将语言更改为 Bootstrap Datetimepicker

java - 正则表达式、地理坐标系值(秒)问题、Java