提问人:user3786542 提问时间:1/1/2023 更新时间:1/2/2023 访问量:42
VB.net 正则表达式在第二个逗号之间查找值
VB.net regex find value between second commas
问:
我正在尝试使用正则表达式从第二组逗号之间提取值。这在开头的单词中有字母 S。
(?<=S,[^,],)[^,]+(?=,)
以上是我能得到的最接近的。它将提供我在 BS 和 CS 线路上寻找的价值。我以为后面的 [^'] 会得到(排除)第一组逗号之间的所有字符。
BB,21,1.750000,0.000000,
AS,21.5,3.250000,-0.187500
BS,21,3.250000,-0.187500
CS, ,1.750000,-0.375000
DS,1,30.375000,-0.375000
QA,aa,30.375000,-0.375000
寻找不仅仅是答案的答案,真的想要一个解释,这样我就可以从中学习。
答:
2赞
The fourth bird
1/1/2023
#1
您可以在开头的 lookbehind 中重复字符类,但在这种情况下,“第二组逗号之间的值”实际上是您匹配的当前值左侧的 2 个逗号。
S 是逗号前的最后一个值,由于没有锚点,它可以有多个匹配项。
(?<=S,[^,]*,)[^,]+(?=,)
如果行仅以大写字符 A-Z 开头,则在第一部分中至少可以匹配一个 S 字符
(?<=^[A-RT-Z]*S[A-Z]*,[^,\n]*,)[^,\n]+(?=,)
该模式匹配:
(?<=
正面向后看,断言向左是^
字符串的开头[A-RT-Z]*
匹配不带 S 的可选字符 A-ZS[A-Z]*
匹配 S 和可选字符 A-Z,[^,\n]*,
匹配逗号的 2 次
)
关闭外观[^,\n]+
匹配逗号或换行符以外的 1+ 个字符(?=,)
在右侧断言逗号
评论
0赞
user3786542
1/2/2023
谢谢。使用 regex101 进行测试时遇到问题。我以为我需要我们 *,但 regex101 给出了一个错误“* 后视内部的量词使其宽度不固定”您指向 regex101 的链接有效,但尝试您在我拥有的版本中提供的示例不起作用。不知道为什么
0赞
The fourth bird
1/2/2023
@user3786542 vb.net 使用必须在 regex101 上的 flavor 下选择的 .NET 引擎。
评论