.net - 正则表达式检查“=”或“|” 存在于 (?<=P_MFG_PART_NUM\=) 和 (?=\|P|$) 之间
问题描述
我正在努力确定一个字符串是否包含“=”或“|” 在分隔符 (?<=P_MFG_PART_NUM\=) 和 (?=\|P|$) 之间。
我可以使用这个 (?<=P_MFG_PART_NUM\=)(.*?)(?=\|P|$) 匹配所有字符。不确定如何检查内部字符串是否只有“=”或“|”。
一个典型的字符串如下所示,我正在尝试识别 = 或 |。匹配字符串的开头应该是“P_MFG_PART_NUM=”,结尾可以是“|P”或行尾
X_MFG_PART_NUM=|X_MANUFACTURER_ID=|X_ORGANIZATION_ID=|X_INVENTORY_ITEM_ID=|X_RETURN_STATUS=验证失败|P_MFG_PART_NUM=十六进制,1/2-13 X 4 IN THD = NC TP316-SS,ASTM A312 |Psdfsdfs
正则表达式将在 .net 中执行。
对此的任何帮助都将受到高度赞赏。
谢谢
解决方案
您可能首先使用缓和的贪婪令牌方法匹配所有没有后跟|P
或字符串结尾的字符$
(?:(?!\|P|$).)*
然后匹配一个|
不跟一个P
或匹配一个等号(?:\|(?!P)|=)
(?<=P_MFG_PART_NUM=)(?:(?!\|P|$).)*(?:\|(?!P)|=).*?(?=\|P|$)
在零件
(?<=P_MFG_PART_NUM=)
断言左边是 `P_MFG_PART_NUM=(?:
非捕获组(?!\|P|$).
如果右边不是|P
字符串或字符串结尾,则匹配任何字符
)*
关闭组并重复 0+ 次(?:
非捕获组\|(?!P)|=
匹配|
不跟随P
或匹配=
)
关闭组.*?(?=\|P|$)
尽可能少地匹配并|P
在右侧断言或字符串结尾
推荐阅读
- android - Android Studio 在共享测试目录中显示未解析的引用,但执行任务按预期工作
- bash - Bash 运行两个命令都依赖于第一个
- docker - Docker build 在另一个目标下执行指令(多阶段)
- authentication - 错误:无法找到或加载主类 org.apache.zookeeper.server.auth.DigestAuthenticationProvider
- ms-word - 无法在 Scriptlab 中使用 domparser 将 ooxml 字符串解析为 xml 对象
- r - 混淆矩阵数据
- java - 无法使用 jdk 11 运行 mvn install
- python - 函数“CudnnConvolutionBackward”在其第 1 个输出中返回 nan 值
- r - pivot_longer 将两组变量分成两列
- reactjs - 如何聚焦表格行?