Regex 正则表达式来提取子字符串
我放弃了。我不懂正则表达式,在过去的两天里,我一直在试图用glom来完成一个简单的任务。所以我会忍受所有的反对票,去问这个简单的(有些人可能会说愚蠢的)问题 我有一个字符串如下所示:Regex 正则表达式来提取子字符串,regex,Regex,我放弃了。我不懂正则表达式,在过去的两天里,我一直在试图用glom来完成一个简单的任务。所以我会忍受所有的反对票,去问这个简单的(有些人可能会说愚蠢的)问题 我有一个字符串如下所示: path/to/the/file/text\u I\u want\u tokeep\u loremipsumdolorsitamet 换句话说,我想要介于第四个“/”和第四个“389;”之间的内容 如果您的回答没有任何解释,我们将不胜感激。如果您能给出解释,我们将不胜感激。:) 谢谢 这应该有效: .+/(.+)_
path/to/the/file/text\u I\u want\u tokeep\u loremipsumdolorsitamet
换句话说,我想要介于第四个“/”和第四个“389;”之间的内容
如果您的回答没有任何解释,我们将不胜感激。如果您能给出解释,我们将不胜感激。:)
谢谢 这应该有效:
.+/(.+)_.+
它基本上跳过任何字符,直到找到斜杠,捕获下一部分,直到它到达一个下划线,该下划线后面有其他内容。您可以尝试类似的方法 正则表达式:
^(?:[^\/]+\/){4}\K(?:[^\]+}{3}[^\]+
1.^
表示字符串的开头
2.(?:[^\/]+\/){4}
此[^\/]+\/
,此处[^\/]+
将匹配所有,直到/
和\/
将匹配/
并且{4}
用于匹配此模式四次
3.\K
这将重置当前匹配
4.(?:[^.]+{3}[^.]+
,这里是[^.]+
这将匹配除
和{3}
之外的所有代码三次
注意:确保少数语言不支持
\K
,在这种情况下,您可以在()
之后编写的表达式周围加上括号,使其成为捕获组
那么到目前为止你都试了些什么呢?我所试的就是在S.O.上找到“类似”的问题,然后随机调整答案并应用到我的数据中,试图找出什么起作用。我刚才得出的结论是我想不出来;我想从正则表达式教程的第1页开始。我会这样做,但我需要以更快的速度解决这个问题。@Steve你想把
loremipsumdolorsitamet
作为你的输出吗?您应该根据您使用的语言使用分解
或拆分
或等效方法。@Sahil:不,对不起。我不清楚。我想要文本\u我想要\u保留
根据您的要求,应该足够了。根据您的示例字符串判断,.谢谢Juan!我现在有三个答案,都有解释,它们似乎都有效。我会从这件事中学到很多。真的很感激@史蒂夫:在研究这个模式时,请注意。@Sahil,@Juan:这个答案实际上给了我text\u I\u want\u tokeep\u loremipsumdolorsitamet
而不是text\u I\u want\u tokeep
我不这么认为@Steve。我自己测试过。:-)我看到我的答案被编辑了。我不知道为什么更改被接受,但斜杠不需要转义。@Steve试试这个。谢谢Sahil。我要接受这个。它在regex101中工作。特别感谢你的解释,这将帮助我学习。我现在必须弄清楚为什么stringr(R包)不会接受这种模式,但这是一个完全不同的问题,我可以自己解决!)@史蒂夫:欢迎。。我的朋友。。很高兴能帮助你……)@史蒂夫:在R中,使用regmatches(x,regexpr(“^(?:[^/]+/){4}\\K(?:[^[u]+}{3}[^[u]+”,x,perl=TRUE))
。或str_match(x,“^(?:[^/]+/){4}((?:[^.]+}{3}[^.]+)”)”