regex 捕获 字母 数字 并 忽略 模式 ( 如 插值 ) 和 符号 的 正则 表达式

ki1q1bka  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(103)

我 有 一 个 可以 包含 字母 、 数字 、 特殊 字符 或 模式 ( 如 */my-variable/* ) 的 字符 串 。
我 希望 基本 上 忽略 特殊 字符 和 任何 模式 ( 可能 是 多 个 ) , 并 获取 剩余 的 文本 以 确保 它 是 可用 的 文本 。 我 的 目标 是 查看 此 字符 串 并 将 其 标记 为 有效 或 无效 , 只要 它 包含 一些 正常 的 单词 , 就 可以 了 , 但 如果 它 只有 模式 和 特殊 字符 , 就 不行 了 。
这 是 针对 PHP 的 ( 如果 这 是 必要 的 信息 ) 。 我 想 避免 使用 多 个 preg_replace , 并 尽量 高效 地 使用 一 行 :返回 我要 查找 的 字母 数字 字符 。
下面 是 一 个 字符 串 示例

Thank You!1!11 | )(^%& */person-first_name/* For Being Awesome */person-c235/* - Number 39658!? $450 | And Some moretextstuff

中 的 每 一 个
我 目前 得到 的 正则 表达式

[\s\w\d]{1,}|(\*\/[^\/\*]*\/\*)

格式
我 正在 使用 regex101.com 。 它 做 了 一些 不错 的 匹配 , 但 我 不 知道 如何 * 排除 * 模式 。 我 可能 不 应该 有 | " 或 " 在 那里 。 如果 必要 , 可能 必须 添加 另 一 个 特殊 字符 的 排除 组 , 但 似乎 他们 忽略 了 [\s\w\d] 部分 。

zzlelutf

zzlelutf1#

在使用php时,可以使用如下模式来排除模式*/..../*或除空格字符之外的非单词字符:

(?:\*/.*?/\*|[^\w\s]+)(*SKIP)(*F)|\w+

图案中的零件:

  • (?:替代项的非捕获组
  • \*/.*?/\**/../*非贪婪匹配到第一次出现时停止
  • |
  • [^\w\s]+匹配一个或多个非单词字符(不包括空格字符)
  • )关闭非捕获组
  • (*SKIP)(*F)跳过比赛
  • |
  • \w+匹配1个或多个单词字符

Regex demo

相关问题