如何编写正则表达式以将十六进制值与变量声明相匹配?

我正在尝试编写一个正则表达式来匹配可能包含以下内容之一的字符串:

  1. 有效的十六进制数 - 例如,“0xa4”(0[xX][0-9a-fA-F]+

  2. 变量定义 - 例如,"$my_var" ( \$[0-9a-zA-Z_]+)

  3. item#1 和 #2 的组合 - 例如,“0xa$my_var”(??

我试过:

^(?:0[xX][0-9a-fA-F]+|\$[0-9a-zA-Z_]+)$ - 但这不支持规则 #3

^(?:0[xX][$0-9a-zA-Z]+)$- 它支持所有标准,但也匹配0x1z这当然不是有效的十六进制(违反规则#1)

寻求社区的帮助...


慕姐4208626
浏览 223回答 1
1回答

DIEA

您可以使用基于锚定交替组的正则表达式,其中一个分支包含两种模式,其中之一是可选的:^(?:0[xX][0-9a-fA-F]+(?:\$[0-9a-zA-Z_]+)?|\$[0-9a-zA-Z_]+)$查看正则表达式演示细节^ - 字符串的开始(?: - 非捕获组的开始:0[xX][0-9a-fA-F]+- 0,x或X, 1+ 十六进制字符(?:\$[0-9a-zA-Z_]+)?- 一个可选的$字符序列和 1+ 字字符| - 或者\$- 一个$字符[0-9a-zA-Z_]+ - 1+字字符) - 非捕获组结束$ - 字符串的结尾。
打开App,查看更多内容
随时随地看视频慕课网APP