Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.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# 正则表达式匹配任何单词组合,但不匹配单个小数点_C#_Regex - Fatal编程技术网

C# 正则表达式匹配任何单词组合,但不匹配单个小数点

C# 正则表达式匹配任何单词组合,但不匹配单个小数点,c#,regex,C#,Regex,我有一个包含(?:\S+{0,4} 这应该匹配:(它已经正确地执行了此操作) 或者任何与之匹配的东西,除了一个小数点或价格 它不应该匹配:(我不知道如何处理此异常) 这可能吗 谢谢大家的意见。仅供好奇的读者参考,这里是它使用的最短的“长正则表达式”之一(您可以在末尾附近找到) 我不确定“一个小数点”是什么意思,因为您的第一个失败示例似乎是一个整数,但您可以尝试: ^(?!\$?\d+(?:\.\d+)?$).+$ 根据您的评论,我认为负面回顾可能更符合您的要求: (?<!\$?\d+(?

我有一个包含
(?:\S+{0,4}

这应该匹配:(它已经正确地执行了此操作)

或者任何与之匹配的东西,除了一个小数点或价格

它不应该匹配:(我不知道如何处理此异常)

这可能吗

谢谢大家的意见。仅供好奇的读者参考,这里是它使用的最短的“长正则表达式”之一(您可以在末尾附近找到)


我不确定“一个小数点”是什么意思,因为您的第一个失败示例似乎是一个整数,但您可以尝试:

^(?!\$?\d+(?:\.\d+)?$).+$
根据您的评论,我认为负面回顾可能更符合您的要求:

(?<!\$?\d+(?:\.\d+)?)

(?您是否可以灵活地以相反的方式编写代码?换句话说,编写正则表达式以匹配单个十进制数或价格(非常简单)。如果匹配,则拒绝输入;否则接受输入。不,正如我所说,这只是长正则表达式的一部分。无论如何,感谢是值得一试的。有时,您可以通过以不同的方式思考来解决难题。我不确定您想做的是单独使用正则表达式(根据更新的信息)。问题来了(这适用于我下面的答案),您使用
(?:\S+{0,4}
将捕获
Asmol 2.5
,然后我的建议查找
2.5
,并喊“犯规”我认为你试图单用正则表达式完成的事情太多了。你可以加入更多的lookarounds来完成这一点,但它会变得非常粗糙,而且你当前的正则表达式是非常复杂的。+1 for。此外,你可以使用asker的原始表达式来代替结尾处的
+
,视情况而定。@Wisegu可能是的,但“或任何东西”的任何评论让我相信
+
更适用。谢谢Kennetch,但它只是长正则表达式的一部分,我不能使用^or$来匹配line@aximili不知道“长正则表达式”,这只是一个猜测。@aximili是否有某种标记可以用来帮助绑定lookback?能否在插入此标记之前捕获一段“long regex”?然后可以使用反向引用绑定。
^ {0,5}(\d{4}[A-Z]) +((?:\S+ )+(?: {0,10}K\+)?) *(\.\.|\d+) +(?:[A-Z#\*] *)?(\.\.|\d+(?:\.\d{1,4})?) +(?:[ab] *)?((?:\S+ ){0,4}) *([A-Z]{2}) {0,10}$
^(?!\$?\d+(?:\.\d+)?$).+$
(?<!\$?\d+(?:\.\d+)?)