2016-06-13 34 views
-1

我有一个类似的问题here,我能够解决。如果一个字符串包含字X,则只选择字Y

我需要的是一个字符串包含文字X,我希望能够说,如果这个字符串包含“azureStorage”选择只有一个字Y.

,然后选择“mystorage”

<add name="azureStorage" connectionString="DefaultEndpointsProtocol=https;AccountName=mystorage;AccountKey=myKey" /> 

我最近的东西是这个正则表达式,它适用于regex101,但不是在c#中。

(?<=(azureStorage)...................................................AccountName=).[^;]* 

显然这不是一个好的解决方案。

Here is a link to the example on Regex 101

+2

为什么使用regex10 1如果你需要一个.NET正则表达式? regex101不支持.NET语法和功能。在regexhero.net或regexstorm.net上测试。 –

+5

而不是使用正则表达式,为什么不解析XML然后解析连接字符串? – juharr

+1

为什么不使用'azureStorage。* AccountName =([^;] *)'并抓取捕获的组#1 – anubhava

回答

1

限制的回顾后,只是字符串azureStorage,然后AccountName=后抢东西,这不是;

(?<=azureStorage).*AccountName=([^;]+) 

您可能需要在末尾添加一个单词边界检查,万一AccountName是连接字符串的最后一个组成部分:

(?<=azureStorage).*AccountName=([^;]+)\b 
+0

这与@anubhava的答案一样,只是访问捕获的组为我工作。 juharr解析XML有一个很好的答案,但是我发布的xml字符串只是一个例子,我想知道如何为任何文本执行此操作。谢谢。 – Sharpiro

相关问题