我正在解析一个我想提取特定字符串的文件。
该字符串将以一定长度的空格开头,后跟:
- 一个 H 后跟 8 个十六进制数
或
- 一个 G 后跟 9 个十六进制数
后跟回车符和换行符。
我是否可以创建一个等价于“如果字符是 H,则跳过 8 个字符,否则如果字符是 G,则跳过 9 个字符”或者更简单的“如果字符是H,跳过 8 个字符,否则跳过 9 个字符。
我目前使用的与 H 配合良好的正则表达式是 @"\s+H.{8}(? <user>
.*)\r\n",但我很困惑在添加条件字符数时。例如,如果有像 [H|G].{8|9} 这样的语法,那就太好了,但我认为这实际上并不存在于正则表达式语法中。
最佳答案
根据我的评论,我只是详细阐述了你的意见
\s+((H.{8})|(G.{9}))(?<user>.*)\r\n
由于 Regex 对应于有限状态自动机,因此很容易看出为什么这是微不足道的,在读取 H 时我们进入一种状态,G 进入另一种状态。
关于c# - 正则表达式可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19642318/