Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 匹配字符串的开头_.net_Regex - Fatal编程技术网

.net 匹配字符串的开头

.net 匹配字符串的开头,.net,regex,.net,Regex,我有一些“路径”,其格式类似于: /Media/Default/images/Tulips.jpg 我有能力得到“根路径”,它将返回类似于: http://example.com/Media/Default/ /another-prefix/Media/Default/ 我需要做的是将“path”字符串的开头与“root path”字符串的结尾匹配,以返回images/Tulips.jpg 我真正需要的是一个通用的正则表达式,它将比较2个字符串对覆盖进行排序,并在尽可能匹配的情况下进行修剪。

我有一些
“路径”
,其格式类似于:

/Media/Default/images/Tulips.jpg
我有能力得到“根路径”,它将返回类似于:

http://example.com/Media/Default/
/another-prefix/Media/Default/
我需要做的是将“path”字符串的开头与“root path”字符串的结尾匹配,以返回
images/Tulips.jpg

我真正需要的是一个通用的正则表达式,它将比较2个
字符串
对覆盖进行排序,并在尽可能匹配的情况下进行修剪。这样,如果将输入更改为:

路径:qwerty一些随机字符串

根路径:垃圾qwerty

结果:-一些随机字符串

正确的解决方案(使用LINQ) 按长度降序尝试
根的所有后缀,并在确定其中一个后缀是
路径的前缀时停止:

var path = "qwerty-qwerty-some-random-string";
var root = "aardvark-junk-qwerty-qwerty";

var prefix = root.Select((ch, i) => root.Substring(i))
                 .Where(pref => path.StartsWith(pref))
                 .DefaultIfEmpty("")
                 .First();
var result = path.Substring(prefix.Length);



注意:最初我在这里发布了一个正则表达式解决方案,但结果证明它完全不可行。

为什么您认为正则表达式适合于此?如果根路径包含重复字符串,Jon的解决方案将无法正常工作:例如,root=“junkjunk qwerty”或root=“path-data-data-qwerty”或者如果字符串以“aardvark”开头怎么办-P-见鬼,任何双字母都有可能打破这一局面-我看得对吗?@Vortexfive:你说得对极了。这些问题是可以解决的,但regex解决方案还有一些根本无法解决的问题。我用LINQ解决方案替换了它。感谢您发现问题。感谢aardvark的点名:-D-我想知道这将在哪里使用(真的是用于某些文件系统?还是仅用于字符串…?)目录应该被视为原子目录吗?或者根路径
abc def ghijkl
和路径
jklmno pqrst
是否可以作为
mno pqrst
在此处正确运行?(即,
-
[或
/
]应被视为分隔符?还是仅被视为另一个字符?)