使用 C# 在 .NET 4.0 中进行开发。(对不起,如果这是冗长的......)
我想创建一个方法,例如:
public static string GetCmdLineArgs(
string cmdLine,
string pathname )
{
...
}
我想创建一个正则表达式模式,让我可以在可执行文件的路径名之后提取参数。规则:
- 命令行可能会或可能不会以路径名开头。
- 如果路径名存在,它将被引用。
- 路径名将是绝对路径。因此,它将包含正则表达式特殊字符,例如“\”、“.”,可能还有其他字符。
- 如果引用的路径名没有出现在命令行的开头,只需捕获并返回命令行,减去任何前导空格。
- 路径名也可能出现在参数中。如果是这样,则应保留此类事件并将其与其余参数一起返回。
- 应该丢弃前导路径名周围的空白字符。
- 目前,在单个字符串中返回所有参数就足够了,但将来可能会添加特定参数的捕获组。
我意识到我可以通过使用简单的System.String
操作来破解这个功能,但我也想知道如何使用正则表达式匹配来做到这一点,以保持未来更改的灵活性。
基本上,我想做类似的事情:
// Create the pattern:
// The pathname is anchored to the beginning of the pattern.
// The pathname group is non-capturing.
// Additional capture groups may be added in the future.
string pattern =
@"^\s*(?:""" + pathname + """)?\s*(.*)";
Regex regex = new Regex( pattern );
Match = regex.Match( cmdLine );
if ( match.Success )
{
// extract matching groups...
}
显然,上述内容不会按原样工作,因为pathname
. 有什么方法可以修改它,让它像我描述的那样工作吗?是否有一个分组运算符可以让我匹配未转义的字符串,或者我是否必须pathname
通过转义所有可能的特殊字符来进行转换?
如果已在其他地方提出并回答了此问题,请指向该帖子。谢谢!