如何使用正则表达式来忽略包含特定子字符串的字符串?

2024-04-01

我将如何使用负向后查找(或任何其他方法)正则表达式来忽略包含特定子字符串的字符串?

我读过之前的两个 stackoverflow 问题:
java-正则表达式用于文件过滤 https://stackoverflow.com/questions/367862/java-regexp-for-file-filtering
正则表达式匹配非特定子字符串的内容 https://stackoverflow.com/questions/42990/regex-to-match-against-something-that-is-not-a-specific-substring

他们是nearly我想要什么...我的问题是字符串没有以我想忽略的内容结尾。如果这样做的话,这就不成问题了。

我有一种感觉,这与环视为零宽度以及第二次通过字符串时某些内容匹配的事实有关...... 但是,我不太确定内部结构。

无论如何,如果有人愿意花时间解释它,我将不胜感激。

这是我想忽略的输入字符串的示例:

192.168.1.10 - - [08/2/2009:16:33:54 -0800]“获取/FOO/BAR/HTTP/1.1”200 2246

以下是我想保留以供进一步评估的输入字符串示例:

192.168.1.10 - - [08/2/2009:16:33:54 -0800]“获取/FOO/BAR/content.js HTTP/1.1”200 2246

对我来说,关键是我想忽略文档根默认页面之后的任何 HTTP GET。

以下是我的小测试工具和迄今为止我想出的最好的正则表达式。

public static void main(String[] args){
String inString = "192.168.1.10 - - [08/Feb/2009:16:33:54 -0800] \"GET /FOO/BAR/ HTTP/1.1\" 200 2246";
//String inString = "192.168.1.10 - - [08/Feb/2009:16:33:54 -0800] \"GET /FOO/BAR/content.js HTTP/1.1\" 200 2246";
//String inString = "192.168.1.10 - - [08/Feb/2009:16:33:54 -0800] \"GET /FOO/BAR/content.js HTTP/"; // This works
//String inString = "192.168.1.10 - - [08/Feb/2009:16:33:54 -0800] \"GET /FOO/BAR/ HTTP/"; // This works
String inRegEx = "^.*(?:GET).*$(?<!.?/ HTTP/)";
try {
  Pattern pattern = Pattern.compile(inRegEx);

  Matcher matcher = pattern.matcher(inString);

  if (matcher.find()) {
    System.out.printf("I found the text \"%s\" starting at " +
"index %d and ending at index %d.%n",
matcher.group(), matcher.start(), matcher.end());
  } else {
    System.out.printf("No match found.%n");
  }
} catch (PatternSyntaxException pse) {
  System.out.println("Invalid RegEx: " + inRegEx);
  pse.printStackTrace();
}
}

你可以匹配任何不以a结尾的路径吗/

String inRegEx = "^.* \"GET (.*[^/]) HTTP/.*$";

这也可以使用来完成消极回顾

String inRegEx = "^.* \"GET (.+)(?<!/) HTTP/.*$";

Here, (?<!/)说“顺序必须not match /".

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用正则表达式来忽略包含特定子字符串的字符串? 的相关文章

随机推荐

  • HTML 预处理器?

    是否有一个 HTML 预处理器可以进行类似的简单页面处理服务器端包括 http en wikipedia org wiki Server Side Includes 但是生成一组静态 HTML 页面 我认为它们被称为预处理器 http ht
  • ng-focus 和 ng-blur 不适用于选择 DOM

    首先 我创建一个简单的示例来查看 ng focus 和 ng blur 是否在 select 上拖动 然后是我的实际代码 我找不到为什么第二个不起作用 div div
  • 使用“灵活”类型参数与泛型类型进行模式匹配

    match value with list lt SomeType gt as l gt l Is it possible to match any list of a type derived from SomeType gt failw
  • 将 system.windows.forms 与 XNA 结合使用

    我正在制作一个使用 XNA 的游戏 我想向游戏添加一些内容 例如按钮 文本框 标签 工具提示文本以及 system windows forms 附带的其他内容 如何将 system windows forms 与 XNA 合并 我可以实现任
  • ubuntu 找不到系统 Java 编译器。确保您已安装 JDK(不仅仅是 JRE)

    在ubuntu 12上 我尝试运行fuse jna的示例程序 我收到以下错误消息 syed ubuntu Downloads fuse jna master examples hellofs sh hellofs compileJava F
  • .NET 应用程序内存使用量 - 未使用的 .NET 和非托管内存和碎片较多

    我正在使用 ANTS 内存分析器来诊断我的 NET 2 0 应用程序之一中遇到的内存泄漏增加情况 我在 7 5 小时内拍摄了该过程的 7 个快照 以下是所获得数据的表格表示形式 G1代表1代尺寸 G2代表2代尺寸 除了非托管空间和私有字节之
  • PHP 中的 zipArchive 打开错误

    无法在 PHP 中创建 zip 存档 总是返回Ziparchive ER MULTIDISK fileName SERVER DOCUMENT ROOT temp temp zip zip new ZipArchive err zip gt
  • Jquery - 遍历所有选中的单选按钮

    我有一个类似于下面的表格
  • 如何通过 Telegraf 监控目录的大小

    我们需要监控一个目录的大小 例如InfluxDB的数据目录 以便在Grafana中设置警报 正如这里提到的 如何配置 telegraf 将文件夹大小发送到 influxDB https stackoverflow com q 4427343
  • Dart:pub get 与 pub Upgrade

    根据pub get docs http pub dartlang org doc pub get html之间的主要区别pub get and pub upgrade is 如果锁定文件已存在 则 pub get 使用锁定在其中的依赖项版本
  • setMaxForRoute 在 ThreadSafeClientConnManager 中不起作用

    我一直在尝试使用 Apache HttpClient 4 1 3 实现连接池并且ThreadSafeClientConnManager 当我尝试设置路由的最大连接数时 我遇到了一个问题 基本上我遵循的例子hc apache org http
  • 缺少具体实现“getter Equatable”/道具问题

    我正在使用 flutter 完成许多关于 bloc 的教程 但遇到了一些不一致的情况 我正在使用 Android studio 并使用 Intellij v1 6 0 的插件创建块代码 对于 bloc event 我继续看到类似这样的示例
  • 使用日期时间搜索日志文件

    我正在读取日志文件 并希望选择将搜索限制在特定日期范围内 日志文件中的行采用以下格式May 27 09 33 33 我已经将日志文件每一行中的日期与其余文本分开 我只是希望能够写出这样的声明 if the date falls betwee
  • 转换为未显式实现的接口?

    假设您定义了一些任意接口 public interface IInterface void SomeMethod 假设有一些类恰好有一个匹配的公共接口 即使它们没有 实现IInterface IE public class SomeClas
  • 在 C# 中使用 ImageAttributes 旋转色调

    如何使用 GDI 旋转图像的色调ImageAttributes 并且大概ColorMatrix 请注意 我想旋转色调 而不是对图像进行着色 EDIT 通过旋转色调 我的意思是图像中的每种颜色应该转换为不同的颜色 而不是使整个图像变成一种颜色
  • 如何将抓取的项目放入 Pyqt5 小部件中?

    我正在尝试为 Scrapy 爬虫制作一个简单的 GUI 用户可以按 开始 按钮来运行抓取并在 textBrowser 或其他 qt 小部件 请告知 中查看抓取的结果 我的蜘蛛 import scrapy json class CarSpid
  • 如果元素的位置是绝对的,浏览器的渲染是否会回流?

    如果我有一个具有绝对位置的元素 并且更改其左侧和顶部位置 则会回流到其父子元素吗 如果它自己的孩子不受影响 因为它们也是由左轴和上轴绝对定位的 那么它们又怎么样呢 如果我更改元素的宽度 高度但在父元素及其子元素中不重要 具有绝对位置的对象不
  • 如何在 Typescript 中创建抽象工厂模式?

    我正在尝试在 Typescript 中实现标准抽象工厂模式 但编译器不合作 这是我的代码的简化版本 abstract class Model class User extends Model abstract class ModelFact
  • 如何取消设置全局变量。

    我有一个id一个项目和一个id客户端的会话是以 JSON 格式传递的 php 会话 这些存储在全局变量中id p and id c所以我可以使用这些 id 进行多次插入和更新选择等 当用户选择另一个项目或更改页面时 我需要取消设置这些变量
  • 如何使用正则表达式来忽略包含特定子字符串的字符串?

    我将如何使用负向后查找 或任何其他方法 正则表达式来忽略包含特定子字符串的字符串 我读过之前的两个 stackoverflow 问题 java 正则表达式用于文件过滤 https stackoverflow com questions 36