提取2个字符串之间的特定文本

时间:2018-04-16 15:19:10

标签: javascript regex

假设我们有以下文字。

Title: (some text)
My Title [abc]

Content: (some test)
My long content paragraph. With multiple sentences. [abc]

Short Content: (some text)
Short content [abc]

使用Javascript和RegEx,是否可以提取文本,使其如下所示。

Title: My Title
Content: My long content paragraph. With multiple sentences.
Short Content: Short content

基本上忽略了()[]括号中的新行和文字?

我试过使用正则表达式,但我无法完全按照我的意愿去做。我也遇到了问题,当我匹配Content:时,我得到Content:& Short Content:但是我只想匹配完全匹配的匹配项。

编辑:

我是RegEx的新手。到目前为止,提取标题,如标题:,内容:等我有

/[A-Za-z]+:|[A-Za-z]+ [A-Za-z]+:|[A-Za-z]+ [A-Za-z]+ [A-Za-z]+:|[A-Za-z]+ [A-Za-z]+ [0-9]+:/g

然后我循环使用

[TITLENAME]:.*\n.*

我正在努力克服这个问题。我的下一步是循环上面匹配的文本,然后删除括号内容。我相信有更好的方法可以做到这一点!

2 个答案:

答案 0 :(得分:0)

您可以使用String.replace( /(\(|\)|\[|\])/g , '')

如果你接受一个字符串并对这两个参数使用replace方法,它将返回一个删除了()[]个字符的字符串。我用\将它们全部转义,因为它们是正则表达式中的特殊字符。这可能有点过于热心。

同样g使正则表达式成为全局,因此它将删除所有实例

答案 1 :(得分:0)

如果括号内的文字(例如' abc')已修复且具有特殊含义,您还可以使用:'/(\(some text\)\n|\(some test\)\n|(\[abc\]))|(^$\n)/gm'。 这样,您可以在要保留的真实文本中使用括号,例如some text (this I want to preserve) and other text

请注意多行m标记。

https://regex101.com/r/cS3pRR/1