Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.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
C# 匹配紧跟在数字后面的单个字母x_C#_Regex - Fatal编程技术网

C# 匹配紧跟在数字后面的单个字母x

C# 匹配紧跟在数字后面的单个字母x,c#,regex,C#,Regex,我需要C#正则表达式,以便它与数字后面的字母X匹配。P.S.12XX不应匹配(因为XX) 例如,“This is ABC 15x DEF”,它应该匹配“15x”如果我理解正确,您需要的是以下正则表达式: [\d]+x[^x] [\d]+x(?=$|[^x]) 它匹配1个或多个数字,后跟文字字母“x”和任何非x的数字 如果您想要任何小写/大写字母而不是特定的字母x,请随意将x替换为[a-z]或[a-zA-z]。您还可以用上述替换件替换最后一部分,即被求反的集合[^x](结果是[^a-z]或类似

我需要C#正则表达式,以便它与数字后面的字母X匹配。P.S.12XX不应匹配(因为XX)


例如,“This is ABC 15x DEF”,它应该匹配“15x”

如果我理解正确,您需要的是以下正则表达式:

[\d]+x[^x]
[\d]+x(?=$|[^x])
它匹配1个或多个数字,后跟文字字母“x”和任何非x的数字

如果您想要任何小写/大写字母而不是特定的字母x,请随意将
x
替换为
[a-z]
[a-zA-z]
。您还可以用上述替换件替换最后一部分,即被求反的集合
[^x]
(结果是
[^a-z]
或类似内容)

另外,有关如何使用regex的说明,请访问regexr.com

//编辑:要涵盖所有可能的情况(如评论中所讨论的),请使用以下正则表达式:

[\d]+x[^x]
[\d]+x(?=$|[^x])
如果输入字符串是
15x
,则前面提到的第一个版本的正则表达式将不匹配,因为后面没有“x以外的字母”(这是
[^x]
要求的)-根本没有任何东西,即字符串不匹配

然而,“new”正则表达式询问匹配后的“字符”是不是x,还是字符串的结尾(可以与
$
匹配)

在@Justinas Marozas answer中也可以使用负前瞻(
(?!something)
),只有当字符串后面的
something
不匹配(因此为“负”)时才匹配。它也不在匹配的字符串/结果中包含
某物
(因此为“lookahead”)

因此,最终的正则表达式是:

[\d]+x(?!x)
使用本文开头提到的第二个正则表达式可以得到相同的结果,而且同样正确——只是稍微长一点


感谢@hvd对我的答案的反馈和改进

如果您希望15倍的空间被空白包围:

@"\b\d+x\b"
如果您不希望15x被空格包围:

@"(?<!\d)\d+x(?!x)"

(?你尝试了什么?为什么我们要让你工作?应该为你工作。不:(它只匹配X,我还需要在Xt之前匹配数字,最起码,你有责任思考这个问题并明确你想要什么。你还没有这样做。
15xy
的预期结果是什么?
15x.
怎么样?
15x15
怎么样?
15x-20x
怎么样?@Vnuuk:还有回复在评论(或代替)中,你应该用你给人们的新信息更新你的问题。你的问题明确地说“匹配单个字母x”"但在评论中,您说您还希望匹配x之前的数字。如果是后者,则更新您的问题以反映正确的信息。如果输入正好是
15x
,则这将不匹配,因为
x
后面不跟
x
以外的字符:它后面不跟任何字符LH.问题中的示例字符串怎么样?@hvd
[\d]+x[^x]*$
,then@PixelMaster那会拒绝
这是abc 15x defghijklmnopqrstuvwxyz
。我不知道拒绝这个是否正确。@hvd该死的:D
[\D]+x(?=$|[^x])
怎么样?那就向前看,这样就不会包括下面的字母了。