2012-02-01 32 views
1

我有逗号分隔的数字列表。我需要匹配所有内容,但不包括我传入的数字,而不包含任何尾随逗号。在逗号分隔的数字列表中匹配所有数字

这是一个字符串,我会被搜索的例子:

1,2,3,5,11,12,13 

所以,如果我在寻找“3”我应该得到“1,2”。如果我在寻找“12”,我应该得到“1,2,3,5,11”

每个数字只会在字符串中出现一次。

我想出了这个适用于除了“1”之外的所有东西,因为我没有完全理解它的原因。如果我在寻找“1”,那么应该没有匹配。我寻找解决方案,但很多'匹配X'的问题有一个字符串的独特部分,使生活更轻松。用数字一个数字可以是另一个数字的一​​部分,例如“3”和“13”。

(.*?)(?=,?[^0-9]5) 

我知道我可以做到这一点与字符串拆分,我可能最终会这样做。然而,自从我开始尝试并没有多少机会来扩展我对正则表达式的了解之后,我真的很想看到针对此问题的解决方案。

顺便说一句 - C#味正则表达式

回答

2

我认为,如果你想有一个号码的第一次出现正是这种数量,而不是其他一些数字,有它作为一个preffix之前,一切都像那个水木清华应该工作:

^(.*?)(?=(,|^)your-number(,|$)) 

对于一个具体的数字,它会看起来像:从您的EXA

^(.*?)(?=(,|^)12(,|$)) 

对于输入并根据要求匹配空字符串1

+0

完美,我可以看到我正在丢失的东西。当你知道如何很容易。 – Jon 2012-02-01 14:07:38

+0

我发誓我不知道如何=) – 2012-02-01 14:08:29

相关问题