是否可以使用正则表达式在两个字符串之间返回一个字符串?例如,如果我有这个字符串:
string =“这是一个::: test ??? string”;
我可以编写一个函数来使用正则表达式返回单词“test”吗?
编辑:对不起,我正在使用C#
答案 0 :(得分:7)
由于你没有提到一种语言,一些C#:
string input = "this is a :::test??? string";
Match match = Regex.Match(input, @":::(\w*)\?\?\?");
if (match.Success)
{
Console.WriteLine(match.Groups[1].Value);
}
(确切的正则表达式取决于你认为匹配...一个词?什么?等等......)
答案 1 :(得分:2)
由于您忘记指明语言,我将在Scala中回答:
def findBetween(s: String, p1: String, p2: String) = (
("\\Q"+p1+"\\E(.*?)\\Q"+p2+"\\E").r
findFirstMatchIn s
map (_ group 1)
getOrElse ""
)
示例:
scala> val string = "this is a :::test??? string";
string: java.lang.String = this is a :::test??? string
scala> def findBetween(s: String, p1: String, p2: String) =
| ("\\Q"+p1+"\\E(.*?)\\Q"+p2+"\\E").r findFirstMatchIn s map (_ group 1) getOrElse ""
findBetween: (s: String,p1: String,p2: String)String
scala> findBetween(string, ":::", "???")
res1: String = test
答案 2 :(得分:0)
是的,在您的正则表达式中,您可以提供围绕您想要匹配的前/后“上下文”,然后使用捕获组返回您感兴趣的项目。
答案 3 :(得分:0)
如果:::和???是你的分隔符你可以使用正则表达式:
:::(.*)\?\?\?
中间的部分将作为匹配中的捕获组返回。