regex - 正则表达式解决方法在lookbehind内无限重复
问题描述
我试图在 Intellij 正则表达式搜索中以一行开头value_to_match
并"attribute": "type"
以 a 开头(在某些时候)匹配文本。"marketTypeId": 123456789
在以下文本中,搜索应该value_to_match
只匹配。
{
"marketTypeId": 123456789,
"description": "Market description",
"periodType": "MATCH",
"periodInstance": 1,
"feedMappingData": [
{
"outcomeIdFeedcodeMap": {
"2": "123456789001",
"1": "123456789002"
},
"conditions": [
{
"element": "Market",
"attribute": "type",
"condition": "EQUALS",
"value": "value_to_match"
},
{
"element": "Market",
"attribute": "traded_pre_match",
"condition": "EQUALS",
"value": "true"
}
]
},
{
"marketTypeId": 12121212,
"description": "Market description",
"periodType": "MATCH",
"periodInstance": 1,
"feedMappingData": [
{
"outcomeIdFeedcodeMap": {
"2": "12121212001",
"1": "12121212002"
},
"conditions": [
{
"element": "Market",
"attribute": "type",
"condition": "EQUALS",
"value": "value_NOT_to_match"
},
{
"element": "Market",
"attribute": "traded_pre_match",
"condition": "EQUALS",
"value": "true"
}
]
},
我一直在尝试对条件使用lookbehind,但似乎Intellij 正则表达式搜索不支持lookbehind 内的无限重复。对于这种情况有什么解决方法吗?
解决方案
使用 Intellij 和积极的后视
Intellij 中使用的正则表达式:
(?s)(?<="marketTypeId":\s123456789,.{1,500}"attribute":\s"type",.{1,100}"value":\s")value_to_match(?=")
笔记:
Dotall 模式也可以通过嵌入式标志表达式 (?s) 启用
在参考中阅读有关此标志表达式和正则表达式外观的更多信息:
https://docs.oracle.com/javase/10/docs/api/java/util/regex/Pattern.html
使用 Intellij 版本 2020.2
Intellij 和匹配的图片:
可以在此处阅读有关 Intellij 和匹配的更多信息:
推荐阅读
- robotframework - 库中的机器人框架关键字名称更改
- gruntjs - Grunt wont watch less
- serverless-framework - serverless framework and use key management service (KMS)
- c# - URI 中的版本不受支持的 API 版本——出了什么问题?
- ruby-on-rails - 提交表单时弹出/模态框,取决于表单中输入了什么信息
- html - How to use image inside a div without moving the other elements
- sql - How to handle getting a list of unique customers per product grouping
- python-3.x - How to train/extend an nltk vocabulary in a non-English language
- amazon-web-services - How to generate ListnerCertificate CertificateArn in loadbalancer
- django - Django rest框架,主键是字符串,而不是整数