【问题标题】:get last 6 characters of a match (javascript regex)获取匹配的最后 6 个字符(javascript 正则表达式)
【发布时间】:2020-09-08 09:48:40
【问题描述】:

我正在尝试用js + regex解析txt文件,我的问题如下:

我有多个 txt 文件,我需要在每个文件中搜索一个 ID,由 6 个字符(数字 + 字母)组成

这是其中一个文件中的字符串:

**IFCPROPERTYSINGLEVALUE('codice sito',$,IFCTEXT('I013FR'),$);**

我只需要提取 I013FR,到目前为止我写的最接近的 js-regex 是:

(codice sito',\$,IFCTEXT\('[a-zA-Z\d]{6})

使用它,我得到回报:

codice sito',$,IFCTEXT('I372TO

现在我需要在正则表达式的末尾“添加一些东西”,以便只从匹配中获取最后 6 个字符。

这可能吗?我走对了吗?或者也许有另一种更好的方法来做到这一点?

【问题讨论】:

  • 欢迎来到 SO!所以你基本上是在这里解析代码?正则表达式不适合解析程序源代码。你能提供更多的背景信息吗——这是一个一次性的东西,对IFCTEXT 位有清晰的结构,还是可以任意复杂? s.match(/'codice sito',\$,IFCTEXT\('([^']+)'\)/) 应该可以解决这个问题。
  • 修改你的capture group
  • 嗨,aitenlabs!欢迎来到 SO!你说你想要“最后 6 个字符”,你的正则表达式是 [a-zA-Z\d]{6}{6} 不是指最后六个字符吗?
  • @HoldOffHunger 不,它没有
  • 谢谢大家的cmets,Mikhail的以下回答解决了这个问题! ;D 给你一些背景信息,基本上我有 5.000 个文件,基本上是 3D 模型。我已经做了一些事情来一次性将这些文件转换为 .txt 文件。现在我需要从所有这些文件中提取信息,并将这些信息放在一个类似 db 的表中(csv、json、xls(没关系))并提取那些我试图使用正则表达式的信息,因为字符串模式总是相同的。您在上面看到的只是要提取的第一个“数据”,但还剩下很多。再次感谢您的回答

标签: javascript regex string match


【解决方案1】:

要提取符号序列,需要将其放在括号中。这种模式称为“捕获组”。 Read more

/codice sito',\$,IFCTEXT\('([a-zA-Z\d]{6})/g

然后您可以使用RegExp.exec() 方法获取您的ID。

const str = "**IFCPROPERTYSINGLEVALUE('codice sito',$,IFCTEXT('I013FR'),$);**";
const regex = /codice sito',\$,IFCTEXT\('([a-zA-Z\d]{6})/g;

const id = regex.exec(str)[1];

【讨论】:

  • 谢谢米哈伊尔,它澄清并解决了我的问题:D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-11
  • 1970-01-01
  • 2016-01-11
  • 1970-01-01
  • 2010-12-06
  • 1970-01-01
相关资源
最近更新 更多