我有一个像
这样的表达式test_abc_HelloWorld_there could be more here.
"test"
我试过了[A-Za-z]{1,}_
,但这没效果。
2个单独的正则表达式,未合并
非常感谢任何帮助!
示例:
表示1)正则表达式匹配单词test
2)正则表达式匹配单词abc
因此任何一种情况下的任何其他匹配都是错误的。就像在,如果我要替换我匹配的东西,那么我会得到这样的东西:
对于案例1)匹配“test”并将“test”替换为“Goat”。
'Goat_abc_HelloWorld_there could be more here'
我不想要替换,我只想在一个单词上匹配。
答案 0 :(得分:16)
在这两种情况下,您都可以使用断言。
^[^_]+(?=_)
将为您提供该行第一个下划线的所有内容,并
(?<=_)[^_]+(?=_)
将匹配两个unserscores之间的任何字符串。
答案 1 :(得分:3)
退一步考虑一下,也许你在这里过度设计解决方案。 Ruby有一个拆分方法,其他语言可能有自己的等价物
给出类似“AAPL_annual_i.xls”的内容,您可以这样做,并利用您的数据已经构建的事实
string_object = "AAPL_annual_i.xls"
ary = string_object.split("_")
#=> ["AAPL", "annual", "i.xls"]
extension = ary.split(".")[1]
#=> ["xls"]
filetype = ary[3].split(".")[0] #etc
“DOH!
但是说真的,我发现依靠分割方法不仅对我来说更容易,对于我的同事来说,阅读我的代码并理解它的作用会更容易。