当数据不遵循单一格式时,如何编写常规表达式?

拉扬

我有一个Javascript字符串:

let entries = `23-05-1990  Some heading
               27-05-1990  Liar Liar
               29-05-1990  Another Heading
               30-05-1990  50/50
               31-05-1990  My day`

使用正则表达式,我需要处理此字符串并生成两个数组:

// 1) date array:
date = ["23-05-1990","27-05-1990", "29-05-1990", "30-05-1990", "31-05-1990"]

// 2) headings array
headings = ["Some heading", "Liar Liar" ,"Another Heading",  "50/50", "My day"]

到目前为止,这很简单:按换行符分隔,然后将每个单独的日期标题传递给正则表达式。获取日期和标题,并将它们附加到各自的数组中。

但是问题是我没有一致的数据格式。

一些数据采用这种格式。即标题早于日期

    `Liar Liar          27-05-1990  
     Another Heading    29-05-1990  
     50/50              30-05-1990  
     My day             31-05-1990  `

标题和日期之间可能会有分隔符。

   `23-05-1990 : Some heading
    27-05-1990 : Yes Man`

   `29-05-1990: Another Heading`

   `30-05-1990 - 50/50
    31-05-1990 - My day`

因此,日期和标题就在那里(我们不知道哪个先出现),但是分隔符可能存在也可能不存在。

也,

  1. 分隔符是下面列出的三个之一:

    “ “ (空间), ”-” , ”:”

  2. 标题不能以字母或整数以外的任何字符开头或结束

卡里·斯沃夫兰

您可以匹配以下正则表达式。日期字符串将位于捕获组1或4中,另一个则为空。标题将位于捕获组2或3中,另一个将为空。

^(?:(\d{2}-\d{2}-\d{4}) *[-:]? *([A-Z\d].*)|([A-Z\d].*)(?<![ :-]) *[-:]? *(\d{2}-\d{2}-\d{4}))$

启动引擎!

如链接所示,"$1$4"返回日期字符串并"$2$3"返回标题。

Javascript的regex引擎执行以下操作。

^                      : assert beginning of string
(?:                    : begin non-capture group
  (\d{2}-\d{2}-\d{4})  : match date and save to capture group 1
  [ ]*[-:]?[ ]*        : match 0+ spaces, optional '-' or ':',
                         0+ spaces 
  ([A-Z\d].*)          : match heading and save to capture group 2
|                      : or
  ([A-Z\d].*)          : match heading and save to capture group 3
  (?<![ :-])           : negative lookbehind asserts previous
                         character is neither ' ', ':' nor '-'
  [ ]*[-:]?[ ]*        : match 0+ spaces, optional '-' or ':',
                         0+ spaces
  (\d{2}-\d{2}-\d{4})  : match date and save to capture group 4 
)                      : end non-capture group
$                      : assert end of string

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在表的同一列的多行中从单一格式插入相同名称的多个数据

来自分类Dev

如何在表的同一列的多行中从单一格式插入相同名称的多个数据

来自分类Dev

如何理解diff输出的统一格式?

来自分类Dev

如何检索不遵循特定格式的所有表达式

来自分类Dev

将数据插入具有单一格式的两个表中。Laravel:错误完整性约束违反

来自分类Dev

如果二进制数据是“ 4字节单一格式”,那是什么意思,我该如何在JavaScript中读取它?

来自分类Dev

如何将文本从同一格式的文档复制到另一文档?

来自分类Dev

如何将z3py表达式转换为smtlib 2格式

来自分类Dev

不遵循正则表达式匹配空间的单词

来自分类Dev

正则表达式,直到满足>不遵循大写

来自分类Dev

不遵循正则表达式匹配空间的单词

来自分类Dev

如何编写正则表达式以捕获特定的数字格式并排除其余的格式?

来自分类Dev

用代号一格式化十进制数

来自分类Dev

jQuery 将日期转换为唯一格式

来自分类Dev

如何编写一个说明缩放,特征状态和数据驱动样式的Mapbox绘画表达式?

来自分类Dev

如何编写xpath表达式?

来自分类Dev

如何编写LESS表达式?

来自分类Dev

如何编写正则表达式

来自分类Dev

使用python以常规表达式提取数据

来自分类Dev

如何为Excel单元格范围编写正则表达式?

来自分类Dev

如何编写正则表达式以从CSS文件提取特定的密钥格式和值?

来自分类Dev

如何编写正则表达式以从CSS文件提取特定的密钥格式和值?

来自分类Dev

检查时间格式时,正则表达式模式不匹配

来自分类Dev

查询访问数据库时条件表达式中的数据类型不匹配

来自分类Dev

ADF表达式adddays()给出错误“日期时间字符串必须与ISO 8601格式匹配”

来自分类Dev

将语法转换为正则表达式时如何编写“或”运算

来自分类Dev

将语法转换为正则表达式时如何编写“或”运算

来自分类Dev

异步加载脚本时如何编写CDN后备表达式?

来自分类Dev

如何在C#中为过滤器数据编写通用表达式树

Related 相关文章

  1. 1

    如何在表的同一列的多行中从单一格式插入相同名称的多个数据

  2. 2

    如何在表的同一列的多行中从单一格式插入相同名称的多个数据

  3. 3

    如何理解diff输出的统一格式?

  4. 4

    如何检索不遵循特定格式的所有表达式

  5. 5

    将数据插入具有单一格式的两个表中。Laravel:错误完整性约束违反

  6. 6

    如果二进制数据是“ 4字节单一格式”,那是什么意思,我该如何在JavaScript中读取它?

  7. 7

    如何将文本从同一格式的文档复制到另一文档?

  8. 8

    如何将z3py表达式转换为smtlib 2格式

  9. 9

    不遵循正则表达式匹配空间的单词

  10. 10

    正则表达式,直到满足>不遵循大写

  11. 11

    不遵循正则表达式匹配空间的单词

  12. 12

    如何编写正则表达式以捕获特定的数字格式并排除其余的格式?

  13. 13

    用代号一格式化十进制数

  14. 14

    jQuery 将日期转换为唯一格式

  15. 15

    如何编写一个说明缩放,特征状态和数据驱动样式的Mapbox绘画表达式?

  16. 16

    如何编写xpath表达式?

  17. 17

    如何编写LESS表达式?

  18. 18

    如何编写正则表达式

  19. 19

    使用python以常规表达式提取数据

  20. 20

    如何为Excel单元格范围编写正则表达式?

  21. 21

    如何编写正则表达式以从CSS文件提取特定的密钥格式和值?

  22. 22

    如何编写正则表达式以从CSS文件提取特定的密钥格式和值?

  23. 23

    检查时间格式时,正则表达式模式不匹配

  24. 24

    查询访问数据库时条件表达式中的数据类型不匹配

  25. 25

    ADF表达式adddays()给出错误“日期时间字符串必须与ISO 8601格式匹配”

  26. 26

    将语法转换为正则表达式时如何编写“或”运算

  27. 27

    将语法转换为正则表达式时如何编写“或”运算

  28. 28

    异步加载脚本时如何编写CDN后备表达式?

  29. 29

    如何在C#中为过滤器数据编写通用表达式树

热门标签

归档