Regex 正则表达式匹配字符串的顺序

Regex 正则表达式匹配字符串的顺序,regex,Regex,我想将字符串中的单词按相反顺序匹配 我们想把验证放在提示用户的位置,若名称以相反的顺序存在 例如: 如果name列的值为'Viral,netsing' 现在,若用户输入一个值为“网球,病毒式”的新名称 那个么我们如何使用正则表达式或其他方法来匹配单词的倒序呢 我正在使用C#.net进行开发。您可以查看并执行以下操作: String[] userEntry = Regex.Split(userString, "\\s+"); StringBuilder sb = new StringBuilder

我想将字符串中的单词按相反顺序匹配

我们想把验证放在提示用户的位置,若名称以相反的顺序存在

例如:

如果
name
列的值为'Viral,netsing'

现在,若用户输入一个值为“网球,病毒式”的新名称

那个么我们如何使用正则表达式或其他方法来匹配单词的倒序呢


我正在使用C#.net进行开发。

您可以查看并执行以下操作:

String[] userEntry = Regex.Split(userString, "\\s+");
StringBuilder sb = new StringBuilder()
for (int i = userEntry.Length -1; i >= 0; i--)
{
     sb.append(userEntry[i]).append(" ");
}

String result = sb.ToString();
//Do Validation
  string input = ...
  string pattern = "[^a-zA-z0-9]+";
  string replacement = "";
  Regex rgx = new Regex(pattern);
  string result = rgx.Replace(input, replacement);
但是,如果不想更改特殊符号(如逗号)的顺序,则需要记住,事情会变得有点混乱。您可以很容易地删除它们,并在不使用特殊符号的情况下执行任何验证

编辑:这取决于特殊符号的含义。正则表达式
[^a-zA-z0-9]+
将匹配任何不是字母(大写或小写)且也不是数字的字符。因此,您可以轻松地执行以下操作:

String[] userEntry = Regex.Split(userString, "\\s+");
StringBuilder sb = new StringBuilder()
for (int i = userEntry.Length -1; i >= 0; i--)
{
     sb.append(userEntry[i]).append(" ");
}

String result = sb.ToString();
//Do Validation
  string input = ...
  string pattern = "[^a-zA-z0-9]+";
  string replacement = "";
  Regex rgx = new Regex(pattern);
  string result = rgx.Replace(input, replacement);

上述内容应产生一个仅由字母和数字组成的字符串。空格也将被删除。

你所说的单词逆序匹配是什么意思?Pehaps,你能添加你正在使用的语言吗?我认为你最好拆分字符串并反向迭代。我可以拆分字符串,但拆分字符的问题可能是类似字符串的(病毒式网球,病毒式网球,病毒式网球)我们如何考虑分裂字符?请参阅下面的答案。您可以从正则表达式中添加/删除分隔符。每当遇到空白时,我所发布的示例将被拆分。是否有任何正则表达式删除特殊符号?@病毒:我修改了我的答案。如果您有任何符号,您不想删除,只需添加。将它们添加到
模式
变量中,确保它们位于方括号内。