c# - 关于regex的疑问

标签 c# regex

我有一个像这样的字符串 "87987987/78979878978" 两个数字的长度没有任何限制,它们之间可以是任何东西,在这个例子中我展示了一个 "/" 但它可以是字母、元音甚至是数字,但它们之间有一个空格,这是一个分隔符。

我如何创建一个正则表达式来解决这个问题?

另外,正则表达式也应该适用于“789787987897”这种没有分隔符和第二个数字的情况。

我尝试了类似这样的操作 "([\a-z]*?) (.) ([\a-z]*?) " 但没有成功。

最佳答案

这个表达式应该有效:

^(\d+)\D*?(\d*)$

思路是在字符串^开头用\d+匹配尽可能多的数字,然后用匹配尽可能少的非数字>\D*?,最后匹配字符串$末尾的零个或多个数字。

Demo.

请注意 \d+\d* 周围的括号:它们正在设置 regex 捕获组。您可以使用这些组从您的 C# 代码中获取正则表达式匹配的数字。

注意:如果您想在“中间的空格”中使用数字,请使用 .* 代替 \D* .

关于c# - 关于regex的疑问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46406566/

相关文章:

c# - 验证,在多个控件上显示数据错误

java - 如何优化这个正则表达式?

c# - Asp.net 4.0 网络服务压缩

c# - SerialPort.Open() --IOException -- "The parameter is incorrect."

regex - 在Dart中使用RegEx获取字符串的一部分

regex - linux diskfree输出的操作

c# - 如何查找没有特定编号的多行

python - 从 Python 中编译的正则表达式中提取命名组正则表达式模式

c# - Entity Framework 重复对象和所有子属性

c# - NHibernate 代码生成