首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >忽略regex以在清单文件中找到包名

忽略regex以在清单文件中找到包名
EN

Stack Overflow用户
提问于 2015-03-18 09:30:32
回答 2查看 365关注 0票数 0

以下列清单文件为例:

代码语言:javascript
复制
Manifest-Version: 1.0
Bnd-LastModified: 1418226794711
Build-Jdk: 1.7.0_67
Built-By: ubuntu
Bundle-Description: Camel FTP support
Bundle-DocURL: http://www.apache.org/
Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
Bundle-ManifestVersion: 2
Bundle-Name: camel-ftp
Bundle-SymbolicName: org.apache.camel.camel-ftp
Bundle-Vendor: The Apache Software Foundation
Bundle-Version: 2.14.1
Created-By: Apache Maven Bundle Plugin
Export-Package: org.apache.camel.component.file.remote;uses:="com.jcraft
 .jsch,org.slf4j,org.apache.camel.util,org.apache.camel.component.file,o
 rg.apache.camel,org.apache.commons.net.ftp,org.apache.camel.spi,org.apa
 che.camel.util.jsse,javax.net.ssl,org.apache.camel.impl,org.apache.came
 l.processor.idempotent";version="2.14.1",org.apache.camel.component.fil
 e.remote.strategy;uses:="org.apache.camel.util,org.apache.camel.compone
 nt.file,org.apache.camel,org.apache.commons.net.ftp,org.slf4j,org.apach
 e.camel.component.file.strategy,com.jcraft.jsch";version="2.14.1"
Export-Service: org.apache.camel.spi.ComponentResolver;component=ftp,org
 .apache.camel.spi.ComponentResolver;component=ftps,org.apache.camel.spi
 .ComponentResolver;component=sftp
Implementation-Title: Apache Camel
Implementation-Version: 2.14.1
Import-Package: com.jcraft.jsch;version="[0.1.40,0.2)",javax.net.ssl,org
 .apache.camel;version="[2.14,2.15)",org.apache.camel.component.file;ver
 sion="[2.14,2.15)",org.apache.camel.component.file.strategy;version="[2
 .14.1,2.14.2)",org.apache.camel.impl;version="[2.14,2.15)",org.apache.c
 amel.processor.idempotent;version="[2.14,2.15)",org.apache.camel.spi;ve
 rsion="[2.14,2.15)",org.apache.camel.util;version="[2.14,2.15)",org.apa
 che.camel.util.jsse;version="[2.14,2.15)",org.apache.commons.net.ftp;ve
 rsion="[3.3,4)",org.slf4j;version="[1.6,2)"
Karaf-Info: Camel;camel-ftp=2.14.1
Tool: Bnd-1.50.0

在寻找依赖问题时,我通常会在项目清单中搜索特定的包。然而,由于线路中断,很难找到它们。例如,如果我将org.apache.camel.component.file.remote.strategy作为简单文本查找,则不会找到它,因为在org.apache.camel.component.fil之后有一个行中断。

,您能想象任何正则表达式,它可以用于搜索文本,忽略任何位置的换行吗?有可能用雷克斯吗?请提供一个查找org.apache.camel.component.file.remote.strategy!的示例regex是否有任何其他解决方案可以方便地在清单中搜索?

EN

回答 2

Stack Overflow用户

发布于 2015-03-18 09:43:32

为什么不使用清单类来处理清单文件?您可以使用接受InputStream的构造函数。

解析完报表后,您可以获得所需的特定属性(我猜在您的示例中是Export)。

同样,如果使用正则表达式,您可能会在Export子句的一个属性或指令中找到一个包(例如:在uses指令中)。因此,我建议您使用felix utils库来解析每个子句。

举个例子:

代码语言:javascript
复制
String searchedPackageName = "org.apache.camel.component.file.remote.strategy";

Manifest manifest = new Manifest(streamOfTheManifest);
String exportPackageHeader = manifest.getMainAttributes().getValue("Export-Package");

// Parser and clause comes from org.apache.felix.utils.manifest package
Clause[] clauses = Parser.parseHeader(exportPackageHeader);

for (Clause exportPackageClause : clauses) {
    String exportedPackageName = exportPackageClause.getName();
    if (searchedPackageName.equals(exportedPackageName) {
    // Do your stuff here
  }
}
票数 3
EN

Stack Overflow用户

发布于 2015-03-25 10:57:04

拿上你的搜索词

  • 例如,转义RegEx特殊字符。->。
  • 在所有字符之间添加"\s*“

并确保运行您的RegEx与dotall和Multiline。

用于RegEx开发的非常好的工具是http://sourceforge.net/projects/quickrex/的eclipse插件。

在清单中搜索可以通过我编写的一个小型FileSearch库来实现。这允许cmd行执行"java -jar .“。这个库的目的最初正是您的任务描述--在包及其MANIFEST.MF文件中进行依赖关系研究。源在这里,https://github.com/peterkir/klib.io

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29118331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档