【发布时间】: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