Javascript正则表达式模式匹配特殊数字数据

时间:2018-04-18 02:38:26

标签: javascript regex numbers

我需要JavaScript代码中的正则表达式模式才能识别以下文本

[2018-04-17 22:31:55,373] WARN [Consumer clientId=consumer-1, groupId=console-consumer-47514] Connection to node -1 could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)[2018-04-17 22:31:55,430] WARN [Consumer clientId=consumer-1, groupId=console-consumer-47514] Connection to node -1 could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)[2018-04-17 22:31:55,549] WARN [Consumer clientId=consumer-1, groupId=console-consumer-47514] Connection to node -1 could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)[2018-04-17 22:31:55,755] WARN [Consumer clientId=consumer-1, groupId=console-consumer-47514] Connection to node -1 could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)[2018-04-17 22:31:56,221] WARN [Consumer clientId=consumer-1, groupId=console-consumer-47514] Connection to node -1 could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)

JavaScript代码从文件中读取这些数据,并使用rexexp模式

进行数学运算

匹配上述数据的简单正则表达式模式是什么?

1 个答案:

答案 0 :(得分:0)

您的正则表达式[+-]?[0-9][0-9_]*\.[0-9de+-]*123123_txt不匹配,因为这些值不包含在您的正则表达式中不可选的点\.

您可以将该点设为可选\.?,但是您必须考虑最后两个示例中的下划线_以及不属于正则表达式的缺失txt

您可以做的是更新正则表达式以匹配字符串^[0-9]+开头的一个或多个数字,并在数字可选后生成.23e4_txt等2个模式。

您的示例不包含前导+-,因此您可能会从头开始忽略[+-]?(您可以随时添加)

对于您的示例值,您可以尝试:

^[0-9]+(?:\.[0-9]+[de]?[0-9+])?(?:_txt)?$

<强>解释

  • ^在行首处断言位置
  • [0-9]+匹配一个或多个数字
  • (?:非捕获组
    • \.[0-9]+[de]?[0-9+]匹配一个点,一个或多个数字,可选de,然后匹配一个或多个数字。
  • )?关闭非捕获组并将其设为可选
  • (?:_txt)?_txt
  • 匹配的可选非捕获组
  • $断言行尾的位置