Javascript、正则表达式 - 我需要获取带有参数的条目,可能跨多行

标签 javascript regex

基于我的 previous question ,我想出了一个更好的方法来解决我的问题。这是我的想法:

  1. 我想开始提取单词/空格字符,直到第一次出现竖线(“|”)分隔符或换行符为止。 trim 两端的空白。这次提取将是一个新“条目”的开始。
  2. 对于找到的每个管道(如果有),我想删除该管道,然后提取所有内容,直到下一次出现管道或换行符。 trim 空白。提取的所有内容都将成为上述“条目”的参数。
  3. 对于下一次出现的换行符:
    1. 如果换行符以管道符开头,或者上一行以管道符结尾,我想删除换行符,就像它不存在一样。
    2. 否则,我想从第 1 步开始,使用一个新的“条目”。

这是一些示例输入:

This will be a new entry | param1 |param2  |etc.
This is another entry, but without params
This is a third entry|with a twist
  | I'm using subsequent lines for
  | its parameters.
Yet I still want the next line to be another new entry.

这应该是输出:

Entry #1: "This will be a new entry"
  Params: ["param1","param2","etc."]
Entry #2: "This is another entry, but without params"
Entry #3: "This is a third entry"
  Params: ["with a twist","I'm using subsequent lines for","its parameters."]
Entry #4: "Yet I still want the next line to be another new entry."

这样做的好方法是什么?

最佳答案

此时,您应该考虑编写正确的语法并使用解析器生成器,而不是修改正则表达式来完成这项工作。

即使您要使用正则表达式,尝试想出一些神奇的单行代码来完成整个工作也会导致一些可怕的结果。

相反,请考虑类似以下伪代码的内容:

foreach (line of input)
    If the first non-whitespace character is NOT a delimiter
        output what we have so far, then parse out the title of the next entry
    while there's still text on this line
        grab up to the next delimiter, parse as a parameter.

关于Javascript、正则表达式 - 我需要获取带有参数的条目,可能跨多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3129759/

相关文章:

javascript - WEB AUDIO API 产生雨噼啪声

c++ - 将奇怪的字符串转换为双C++

c# - 用于在 C#.net 中获取 javascript 函数的正则表达式

javascript - 如何对本地存储中的嵌套键进行数字排序

javascript - 如何计算两个 Bootstrap 日期选择器之间的差异?

javascript - Canvas 颜色和拖放

javascript - React Native Navigator:仅在某些组件上显示导航栏

Javascript 正则表达式 多个小数

java - 模式名称特殊字符

regex - notepad++ 用 , 替换空格和