【问题标题】:Extract multiple sentences with regex使用正则表达式提取多个句子
【发布时间】:2019-11-15 03:45:37
【问题描述】:

我一直在尝试从文件中提取文本,该文件类似于 json,我尝试过JSON.Parse,但总是返回错误。我认为它不是正确的 json 格式,所以我想用普通的正则表达式来做。

<ref *2> MessageEmbed {
  message: <ref *1> Message {
    channel: DMChannel {
      type: 'dm',
      deleted: false,
      id: '644589216793362433',
      recipient: [User],
      lastMessageID: '644728116396163073',
      lastPinTimestamp: null,
      messages: [Collection [Map]],
      _typing: Map {}

我需要提取 id 值,如 64458...messages"[Collection [Map]]"。如何使用 regex 完成此操作?

【问题讨论】:

标签: javascript node.js regex


【解决方案1】:

我认为这不是最好的方法,但也许你有兴趣研究一下,

id:\s*'(\d*)'|messages:\s*(\[.*\])

const regex = /id:\s*'(\d*)'|messages:\s*(\[.*\])/gm;
const str = `<ref *2> MessageEmbed {
  message: <ref *1> Message {
    channel: DMChannel {
      type: 'dm',
      deleted: false,
      id: '644589216793362433',
      recipient: [User],
      lastMessageID: '644728116396163073',
      lastPinTimestamp: null,
      messages: [Collection [Map]],
      _typing: Map {}`;
let m;

while ((m = regex.exec(str)) !== null) {
    // This is necessary to avoid infinite loops with zero-width matches
    if (m.index === regex.lastIndex) {
        regex.lastIndex++;
    }
    
    // The result can be accessed through the `m`-variable.
    m.forEach((match, groupIndex) => {
        console.log(`Found match, group ${groupIndex}: ${match}`);
    });
}

如果您希望简化/修改/探索表达式,在regex101.com 的右上角面板中已对此进行了说明。如果您愿意,您还可以在this link 中观看它如何与一些示例输入相匹配。


正则表达式电路

jex.im 可视化正则表达式:

【讨论】:

    猜你喜欢
    • 2015-03-12
    • 1970-01-01
    • 1970-01-01
    • 2014-11-22
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 1970-01-01
    • 2012-04-30
    相关资源
    最近更新 更多