【问题标题】:Split a string using a regex [closed]使用正则表达式拆分字符串 [关闭]
【发布时间】:2018-07-05 14:52:20
【问题描述】:

我想将以下 str 拆分为一个包含 2 个元素的数组,第一个是“句子中的一些单词”,第二个是“ABC”,其中 ABC 可以是任何大写字符。

const str = 'Some words in a sentence (ABC)';
const regex = ?
const arr = str.split(regex);
...
expect(arr[0]).to.eq('Some words in a sentence');
expect(arr[1]).to.eq('ABC');
expect(arr.length).to.eq(2);

任何想法都将不胜感激。

干杯,

保罗

【问题讨论】:

  • 所以不是免费的代码生成器。你尝试过什么吗?向我们展示最少的努力
  • 我不认为你可以通过简单的拆分得到这个结果,在 [()] 周围拆分时你会得到一个额外的空字符串元素
  • 哇,我要的只是人们的“想法”而不是代码。我认为这是一个提问的好地方——显然不是:-(

标签: javascript regex


【解决方案1】:

转到 https://regex101.com/ 并尝试一下

/(.*)\(([A-Z]{3})\)/

用你的字符串

'Some words in a sentence (ABC)'

你会得到

Match 1
Full match  0-30    `Some words in a sentence (ABC)`
Group 1.    0-25    `Some words in a sentence `
Group 2.    26-29   `ABC`

【讨论】:

  • 感谢您的想法,非常感谢。
【解决方案2】:

正则表达式的诀窍是将其分解为多个步骤。

  • 您需要两个元素,这意味着两个组,例如(<-- between these -->))
  • 最简单的方法是在末尾获取 (ABC) -> \((.*?)\)$(转义 () 的
  • 现在您可以得出结论,剩下的就是另一部分了:(.*?)

解释:

                          /---\   is the \((.*?)\)$
 Some words in a sentence (ABC)
 ^----      (.*?)    ----^

这应该将你推向你正在寻找的方向,最后一部分是你自己弄清楚:)

【讨论】:

  • 感谢您的想法,非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-07
  • 1970-01-01
  • 2017-02-23
相关资源
最近更新 更多