Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何正则表达式匹配并返回具有已知起始格式且以双线分隔符结尾的字符串?_Javascript_Regex - Fatal编程技术网

Javascript 如何正则表达式匹配并返回具有已知起始格式且以双线分隔符结尾的字符串?

Javascript 如何正则表达式匹配并返回具有已知起始格式且以双线分隔符结尾的字符串?,javascript,regex,Javascript,Regex,我正在尝试用javascript解析一个文本文件。我无法控制文本文件的内容 文本文件由多条记录组成。每条记录都以HH:MM时间戳开始。每条记录都由一个双行分隔符分隔\n\n。记录可以是单行,也可以是由一个换行符分隔的多行\n 例如: 09:00\tRecordA \tSome extra detail about Record A 10:00\tRecordB \tSome extra detail about Record B \tEven more detail about Record

我正在尝试用javascript解析一个文本文件。我无法控制文本文件的内容

文本文件由多条记录组成。每条记录都以HH:MM时间戳开始。每条记录都由一个双行分隔符分隔
\n\n
。记录可以是单行,也可以是由一个换行符分隔的多行
\n

例如:

09:00\tRecordA
\tSome extra detail about Record A

10:00\tRecordB
\tSome extra detail about Record B
\tEven more detail about Record B

11:00\tRecordC
我希望生成这样的记录数组:

[ 
    "09:00\tRecordA\n\tSome extra detail about Record A",
    "10:00\tRecordB\n\tSome extra detail about Record B\n\tEven more detail about Record B",
    "11:00\tRecordC"
]
到目前为止,我可以毫无问题地得到第一行

textFile.match(/^\d\d:\d\d.*\n?/gm);

[ 
    "09:00\tRecordA",
    "10:00\tRecordB",
    "11:00\tRecordC
]
经过大量的搜索、尝试和错误,我仍然难以获得额外的细节。下面是最有希望的途径,但我可能离目标还很远

添加额外的\n,但由于通配符与换行符不匹配,这显然不起作用

textFile.match(/^\d\d:\d\d.*\n\n?/gm);
使用\s修饰符,但这不会将记录拆分为单独的数组项

textFile.match(/^\d\d:\d\d.*\n?/sgm); 

[ 
    "09:00\tRecordA\n\tSome extra detail about Record A\n\n10:00\tRecordB\n\tSome extra detail about Record B\n\tEven more detail about Record B"
]
定义一个组并重复它两次,但返回
null

textFile.match(/^\d\d:\d\d.*(\n){2}?/gm);

我的正则表达式技能非常有限,我正在努力学习。如果您有任何关于这个问题的建议,我们将不胜感激。

m
多行修饰符将永远无法工作,因为它一次只处理一行

没有
m
^
将只匹配文本的开头

通常的换行通配符是
[^]
(不是零),但这将匹配到最后一行

正则表达式可能有办法


但您可以考虑<代码> .Seple(“\n\n”)而不是

<代码> M< /Cult>多行修饰符,将永远不起作用,因为它每次只处理一行。

没有
m
^
将只匹配文本的开头

通常的换行通配符是
[^]
(不是零),但这将匹配到最后一行

正则表达式可能有办法


<>但是你可以考虑<代码> .Seple(\\n\n)而不是

谢谢@犹太人这是个好主意。但是,该文件包含记录上方和下方的其他文本,如果简单地按双精度分割,则需要过滤掉这些文本\n。不过,我将对此进行试验,但如果有一种方法可以用regex实现这一点,我将非常有兴趣了解它是如何完美工作的。在分割文件
.split(“\n\n”)
之后,我可以在各个段落上使用正则表达式来获得我需要的部分。谢谢你的新观点!谢谢@jew这是个好主意。但是,该文件包含记录上方和下方的其他文本,如果简单地按双精度分割,则需要过滤掉这些文本\n。不过,我将对此进行试验,但如果有一种方法可以用regex实现这一点,我将非常有兴趣了解它是如何完美工作的。在分割文件
.split(“\n\n”)
之后,我可以在各个段落上使用正则表达式来获得我需要的部分。谢谢你的新观点!