我有一个以逗号分隔的数字列表。我需要匹配所有内容但不包括我传入的数字而没有任何尾随逗号。
这是我要搜索的字符串示例:
1,2,3,5,11,12,13
所以,如果我正在寻找“3”,我应该得到“1,2”。如果我正在寻找“12”,我应该得到“1,2,3,5,11”
每个数字只会在字符串中出现一次。
我想出了这个适用于“1”以外的所有内容,因为我没有完全理解它失败了。如果我正在寻找“1”,那么应该没有匹配。我已经找到了解决方案,但很多“匹配X”问题都有一个独特的字符串部分,使生活更轻松。使用数字,一个数字可以是另一个数字的一部分“3”和“13”。
(.*?)(?=,?[^0-9]5)
我知道我可以通过字符串拆分来做到这一点,我最终可能会这样做。但是,既然我开始尝试并且没有很多机会扩展我对正则表达式的了解,我真的很想看到解决这个问题的方法。
Btw - C#风格的正则表达式
答案 0 :(得分:2)
我认为,如果你想要在第一次出现数字之前的所有内容以及确切地说这个数字而不是其他一些将其作为前缀的数字,那么这样的事情就应该有效:
^(.*?)(?=(,|^)your-number(,|$))
对于特定的数字,它看起来像这样:
^(.*?)(?=(,|^)12(,|$))
对于来自您的示例和数字1
的输入,它会根据请求匹配空字符串。