gpt4 book ai didi

java - 换行符忽略正则表达式在 list 文件中查找包名称

转载 作者:行者123 更新时间:2023-12-01 18:16:40 26 4
gpt4 key购买 nike

以以下 list 文件为例:

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

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

你能想象任何正则表达式可以用来搜索忽略任意位置换行符的文本吗?正则表达式可以吗?请提供一个示例正则表达式来查找org.apache.camel.component.file.remote.strategy!有没有其他解决方案可以轻松地在 list 中搜索?

最佳答案

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

解析Manifest后,您可以获得您需要的特定属性(我猜您的情况是Export-Package)。

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

一个例子:

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
}
}

关于java - 换行符忽略正则表达式在 list 文件中查找包名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29118331/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com