trn*_*son 6 c# regex asp.net string rewrite
我想知道是否有人可以帮助我在C#中使用正则表达式.我认为这很简单,但我一直在抨击我的大脑并且不太确定为什么我会遇到这么困难.:)
我已经找到了几个例子,但我似乎无法操纵它们去做我需要的东西.
我只需要匹配任何不是"www"的字母数字+破折号子域名字符串,而只需要匹配"."
另外,理想情况下,如果有人输入"www.subdomain.domain.com",我希望尽可能忽略www.如果没有,这不是一个大问题.
换句话说,我想匹配:
我不想匹配:
在我看来它应该很容易,但我遇到了"不匹配"部分的麻烦.
对于它的价值,这是在IIS 7 URL重写模块中使用,以重写所有非www子域.
谢谢!
域名的其余部分是否保持不变,例如.domain.com,在您的示例中?试试这个:
\b(?!www\.)(\w+(?:-\w+)*)(?=\.domain\.com\b)
Run Code Online (Sandbox Code Playgroud)
说明:
\w+(?:-\w+)* 匹配您描述的通用域名组件(但更严格一些).
(?=\.domain\.com\b) 确保它是第一个子域(即实际域名之前的最后一个子域).
\b(?!www\.)确保它不是www.(没有\b,它可以跳过第一个w并匹配ww.).
在我的测试中,这个正则表达式与您在示例中突出显示的部分完全匹配,并且www.与前两个示例中的任何一个都不匹配.
编辑:这是另一个匹配整个名称的版本,捕获不同组中的碎片:
^((?:\w+(?:-\w+)*\.)*)((?!www\.)\w+(?:-\w+)*)(\.domain\.com)$
Run Code Online (Sandbox Code Playgroud)
在大多数情况下,组$1将包含一个空字符串,因为那里的子域名之前没有的,但这里是它的分解www.subdomain.domain.com:
$1: "www."
$2: "subdomain"
$3: ".domain.com"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2968 次 |
| 最近记录: |