正则表达式查找所有可能出现的以 ~ 开头和结尾的文本

2023-11-24

我想找到两个之间所有可能出现的文本~s.

例如:对于文本~*_abc~xyz~ ~123~,我想要以下表达式作为匹配模式:

  1. ~*_abc~
  2. ~xyz~
  3. ~123~

请注意,它可以是字母或数字。

我尝试使用正则表达式~[\w]+?~但它没有给我~xyz~。我想~有待重新考虑。但我不想只是~~作为可能的匹配。


Use 捕捉积极的前瞻使用以下正则表达式:

有时,您需要在同一个单词内进行多个匹配。例如,假设来自一个字符串,例如ABCD你想要提取ABCD, BCD, CD and D。您可以使用这个正则表达式来做到这一点:

(?=(\w+))

在字符串的第一个位置(在A),引擎开始第一次匹配尝试。前瞻断言紧随当前位置的是一个或多个单词字符,并将这些字符捕获到组 1。前瞻成功,匹配尝试也成功。由于模式与任何实际字符不匹配(先行仅查找),因此引擎返回零宽度匹配(空字符串)。它还返回第 1 组捕获的内容:ABCD

然后引擎移动到字符串中的下一个位置并开始下一次匹配尝试。同样,前瞻断言紧随该位置的是单词字符,并将这些字符捕获到组 1。匹配成功,组 1 包含BCD.

引擎移动到字符串中的下一个位置,并且该过程会重复进行CD then D.

So, use

(?=(~[^\s~]+~))

See the 正则表达式演示

图案(?=(~[^\s~]+~))检查字符串中的每个位置并搜索~后跟 1+ 个除空格之外的字符~然后是另一个~。由于索引仅在检查位置后移动,而不是在值被移动时移动。captured,重叠的子串被提取。

Java演示:

String text = " ~*_abc~xyz~ ~123~";
Pattern p = Pattern.compile("(?=(~[^\\s~]+~))");
Matcher m = p.matcher(text);
List<String> res = new ArrayList<>();
while(m.find()) {
    res.add(m.group(1));
}
System.out.println(res); // => [~*_abc~, ~xyz~, ~123~]

以防万一有人需要Python演示:

import re
p = re.compile(r'(?=(~[^\s~]+~))')
test_str = " ~*_abc~xyz~ ~123~"
print(p.findall(test_str))
# => ['~*_abc~', '~xyz~', '~123~']
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

正则表达式查找所有可能出现的以 ~ 开头和结尾的文本 的相关文章

随机推荐

  • 我们如何或可以通过 npm 与 Meteor 使用节点模块?

    我们如何或者我们可以通过 npm 使用节点模块Meteor 或者这取决于包装API 或者有推荐的规定方法吗 流星1 3于 2016 年 3 月 28 日发布 为应用程序提供完整的 ES6 ES2015 模块支持和开箱即用的 NPM 支持 应
  • ASP.Net Core:使用共享项目在多个项目之间共享静态资源(css / js)

    从这里汲取灵感 http rion io 2017 03 22 sharing is caring using shared projects in asp net 我尝试使用共享项目在多个 ASP Net Core 项目之间共享静态资产
  • 正则表达式匹配最后一个空格字符

    我需要一些帮助 我正在寻找一个与字符串中最后一个空格字符匹配的正则表达式 我正在使用 JavaScript 和经典 ASP 我有一长串文本 我将其修剪为 100 个字符 我想删除最后一个字符 以避免由于 100 个字符的限制而修剪单词时出现
  • 强制 EditText 在按下后退时失去焦点

    当用户按下后退按钮隐藏键盘时 我试图强制 EditText 控件失去焦点 已经有很多类似的问题了 但是几个小时后 我还没有能够让它发挥作用 首先 简单介绍一下背景 我有一个带有自定义项目的 ListView 每一项都有多个 TextView
  • 在领域对象服务器上的不同用户之间共享领域?

    目前有没有办法允许多个用户访问同一个 Realm 现在我能找到的唯一方法是使用 应用程序帐户 而不是用户帐户 如建议的那样另一个问题 thanks 通常 您可以连接到虚拟路径中的 Realm 文件 它们必须始终是绝对的 因此以斜杠开头 并且
  • 角度形式数据不会附加

    我正在尝试使用 Angular 6 上传文件 但是 我似乎无法附加我的 formData 一点帮助 谢谢 home component ts export class HomeComponent implements OnInit sele
  • PHP中如何获取字符数?

    mb strlen只给出字节数 这不是我想要的 它应该适用于多字节字符 mb strlen text UTF 8
  • 您的应用程序正在使用包含 SQL 注入漏洞的内容提供商

    我有 2 个应用程序 第二个应用程序通过内容提供程序与第一个应用程序交互以获取一些凭据 今天在 Playstore 上上传我的 apk 时出现错误 SQL 注入 您的应用程序正在使用包含 SQL 注入漏洞的内容提供程序 要解决此问题 请按照
  • Java 异常错误 - Sqlite preparedStatement.setBlob

    我将图像放入数据库中 它可以是 MYSQL 数据库 服务器 或 SQLITE 数据库 路上使用的平板电脑 Java 应用程序每天与服务器同步 上传新数据并下载任何新数据 那部分运作良好 然而 要求它也能够处理图像 我们选择在数据库中使用 b
  • 自定义tinymce 4.0.5 styleselect工具栏菜单

    我正在尝试自定义默认值styleselect工具栏菜单 这样我就可以向其中添加自定义菜单元素 这个想法是将字体大小设置为styleselect子菜单 我初始化了一个TinyMCE 4 0 5通过以下方式 tinymce init langu
  • Inno Setup 中序列号的自定义页面

    如何在 Inno Setup 中使用序列号编辑框创建自定义页面 例如 6x5 个字符还是 7x5 个字符 脚本应在 下一步 按钮可用之前检查是否已填写所有框 如果可以实现复制 粘贴功能 如果剪贴板内容与序列号模式匹配 则允许填充所有编辑框
  • 如何在 Python 中将字符串包装到文件中?

    如何使用字符串的内容创建类似文件的对象 与文件相同的鸭子类型 对于 Python 2 x 请使用StringIO模块 例如 gt gt gt from cStringIO import StringIO gt gt gt f StringI
  • Android画布填充背景色(Canvas应用程序)

    通过以下代码 我有一些疑问 public class MainActivity extends Activity Override public void onCreate Bundle savedInstanceState super o
  • 我们可以自己写一个EOF字符吗?

    大多数语言 例如 C 在写入文件时都会放置一个 EOF 字符 即使我们错过了编写如下语句 文件流 关闭 但是有没有办法 我们可以根据我们的要求来放置EOF字符 例如在C 中 或者除了使用 C 中提供的函数之外我们还可以使用任何其他方法 如果
  • 继续取消任务

    我定义了以下任务 var t Task Factory StartNew gt LongRunningMethod cancellationToken cancellationToken t ContinueWith Callback ca
  • Numpy->Cython 转换:编译错误:无法将 'npy_intp *' 转换为 Python 对象

    我有以下代码要正确转换为 cython from numpy import returns winning players or if undecided def score board scores checked zeros board
  • 如何在Python中读取一行csv数据?

    有很多使用 python 读取 csv 数据的例子 比如这个 import csv with open some csv newline as f reader csv reader f for row in reader print ro
  • Apache Spark:如何从 DataFrame 创建矩阵?

    我在 Apache Spark 中有一个带有整数数组的 DataFrame 源是一组图像 我最终想对其进行 PCA 但我在从数组创建矩阵时遇到了麻烦 如何从 RDD 创建矩阵 gt imagerdd traindf map lambda r
  • 将命令行上的变量传递给 Cucumber 测试

    我试图将黄瓜项目的用户名和密码保留在版本控制之外 有没有办法手动将命令行上的变量 例如用户名和密码 传递给黄瓜脚本 我的备份计划是将它们放入 YML 文件中 并将该文件添加到 gitignore 这样它们就不会被置于版本控制中 所以 我看到
  • 正则表达式查找所有可能出现的以 ~ 开头和结尾的文本

    我想找到两个之间所有可能出现的文本 s 例如 对于文本 abc xyz 123 我想要以下表达式作为匹配模式 abc xyz 123 请注意 它可以是字母或数字 我尝试使用正则表达式 w 但它没有给我 xyz 我想 有待重新考虑 但我不想只