java - 多行配置文件中的正则表达式,不等于

标签 java regex

我一直在努力研究这个,但我很难找到相关的帖子。我们为我们的一项服务使用配置文件,如下所示(请注意,一些名称在哈希后有空格,一些有参数):

#GetContactDetails
GetContactDetails.XXXXUser=USERNAME
GetContactDetails.XXXXPassword=PASSWORD
GetContactDetails.TestFlag=Y
GetContactDetails.EndPointURL=http://111.99.111.999/ENVNAME2/endpoint.xx
GetContactDetails.Timeout=40000
GetContactDetails.LoggingFlag=Y

# GetContactDetails
GetContactDetails.XXXXUser=USERNAME
GetContactDetails.XXXXPassword=PASSWORD
GetContactDetails.TestFlag=Y
GetContactDetails.EndPointURL=http://111.99.111.999/ENVNAME2/endpoint.xx
GetContactDetails.Timeout=40000
GetContactDetails.LoggingFlag=Y

# GetContactDetails Parameters
GetContactDetails.XXXXUser=USERNAME
GetContactDetails.XXXXPassword=PASSWORD
GetContactDetails.TestFlag=Y
GetContactDetails.EndPointURL=http://111.99.111.999/ENVNAME2/endpoint.so
GetContactDetails.Timeout=40000
GetContactDetails.LoggingFlag=Y

基本上有 4 种不同的变体:

#servicename
# servicename
#servicename parameters
# servicename parameters

我希望能够在此文本文件上运行替换,留下每个服务的名称(只是以 # 开头的行)。这意味着我需要识别任何不等于 # 行模式的东西。所有的组合我都试过了,我无法让它识别其他所有东西。

有什么建议吗?

附言(来自评论)

我希望使用正则表达式,因为现有的 Java 服务可以使用正则表达式进行替换。要沿着这条路走下去,需要编写一个 Java 服务并部署它,尽管这不是一项太大的任务,但我想尽可能避免它。

最佳答案

Search: ^[^#].*[\r\n]*
Replace: <blank>

关键部分是^[^#],意思是“第一个字符不是hash”

您需要 [\r\n]* 也匹配换行符(点不匹配换行符),否则您将留下空行(而不是删除它们)。

关于java - 多行配置文件中的正则表达式,不等于,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38010034/

相关文章:

java - Spark 读取 csv - Java 中的多个 S3 路径

java - 函数仅返回偶数

regex - 查找和删除 xml 文件中的特定标签

java - 动态添加属性到 StanfordCoreNLP Annotator 或 Pipeline

java - 使用坐标存储系统创建稀疏矩阵?

Java - 如何从 Java 类引用资源文件

python - 从 Python3.3 中的字符串中删除除字母和空格之外的所有内容

regex - 原子分组的失败速度更快是什么意思

javascript - 如何在 node.js 上用\r\n 替换字符串?

java - 如何独立于区域设置在字符串中查找括号?