Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >正则表达式-修剪空白

正则表达式-修剪空白
EN

Stack Overflow用户
提问于 2014-11-04 01:14:10
回答 3查看 66关注 0票数 0

我目前正在学习正则表达式,如果能帮助理解这一点,我将不胜感激:

假设我有一个包含前导空格和尾随空格的字符串:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        abc      

我想在删除所有空格的同时隔离字符串。我的想法是使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
\s*(\w+)\s*

作为*量词,由于贪婪,它将尽可能多地使用前导和尾随空格,这就只剩下字符串"abc“。这种方法似乎是可行的。

然而,我看到一些解决方案包含^和$锚点,给出了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
^\s*(\w+)\s*$

为什么需要包含^和$锚点?我知道它们的功能,但是我不明白为什么在(\w*)之前和之后的\s*是不够的。

EN

回答 3

Stack Overflow用户

发布于 2014-11-04 01:16:56

因为在多行模式下,您需要使用锚点来匹配前导空格和尾随空格,否则,如果输入包含两行或更多行,它还将匹配前一行中的换行符。如果您只想匹配水平空格,那么我建议您使用\h而不是\s。大多数编程语言都不支持\h

  • \s*(\w+)\s*将捕获foo,此foo bar字符串中的bar将不匹配此foo bar字符串
票数 1
EN

Stack Overflow用户

发布于 2014-11-04 01:22:37

为什么需要包含 ^$ 锚点?锚点定义了字符串中必须出现匹配的位置。在模式中使用锚点时,正则表达式引擎不会在字符串中向前移动,也不会使用任何字符。它只在这些位置查找匹配项。

这表示空格只能出现在字符串的开头。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
^       # assert position at the beginning of the string         
\s*     # whitespace (\n, \r, \t, \f, and " ") (0 or more times)

这表示空格只能出现在字符串的末尾。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
\s*     # whitespace (\n, \r, \t, \f, and " ") (0 or more times)
$       # assert position at the end of the string 
票数 1
EN

Stack Overflow用户

发布于 2014-11-04 02:44:41

在使用*时要小心

  • 指的是零次或多次。这可能很危险,因为即使在没有实际字符的情况下,它也会产生匹配。例如,此^\s*(\w*)\s*$将生成this match.

这不是你想要的。由于*是零或大于零,它将找到\w零次(意思是没有任何\w),所以它将匹配它!我知道,这有点让人困惑。

为什么要包含^和$?

让我们以您的示例\s*(\w+)\s*为例,分别使用和不使用^和$。假设我们尝试在“abc &”中匹配abc (不带引号)。正如您将从这个link中看到的,它将成功地将abc与空格相匹配,并省略&。

让我们尝试相同的文本,相同的,只使用^和$的正则表达式(参见this example)。未生成匹配项!但是为什么呢?基本上,将正则表达式放在^和$之间就是说:我只需要^(行首)和$(行尾)之间的内容。如果你发现任何不是这些东西的东西,不要匹配它。

关于您的表达式,您肯定会捕获abc,但将其与空格进行匹配。如果只想匹配abc,只需输入\w+,它将匹配字符串(\w = A-Z,a-z,0-9和_),而不匹配其他字符串。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26726187

复制
相关文章
android一个弹出菜单的动画(二)「建议收藏」
代码:http://download.csdn.net/detail/baidu_nod/7731115
全栈程序员站长
2022/07/08
5200
android一个弹出菜单的动画(二)「建议收藏」
jquery导航菜单「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/159432.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/17
5.8K0
jquery导航菜单「建议收藏」
Android学习之菜单
android中包含多种菜单,本例带来的是选项菜单和上下文菜单。 1.选项菜单 在android中,开发者可以在xml文档中部署所要添加的菜单,在后台调用即可。 1 <menu xmlns:android="http://schemas.android.com/apk/res/android" > 2 3 <item 4 android:id="@+id/action_add" 5 android:title="添加" 6 android
水击三千
2018/02/27
9420
Android-SubMenu选项菜单和子菜单
简介: SubMenu:代表一个子菜单,包含1~N个MenuItem 实现效果: 具体实现方法: 主活动 MainActivity: public class MainActivity extends AppCompatActivity { //定义 “字体大小” 菜单项的标识 final int FONT_10 = 0x111; final int FONT_12 = 0x112; final int FONT_14 = 0x113; final int FON
圆号本昊
2021/09/24
1.3K0
Android-SubMenu选项菜单和子菜单
Android-菜单关联activity
有时,程序需要单击某个个菜单来实现启动ing其他的activity(或者service)
圆号本昊
2021/09/24
6230
Android-菜单关联activity
Android 侧滑抽屉菜单
  滑动菜单相信都不会陌生,你可能见过很多这样的文章,但我的文章会给你不一样的阅读和操作体验。
晨曦_LLW
2021/03/23
4K0
Android 侧滑抽屉菜单
Android菜单 布局 表格布局
多用于静态菜单页面 xml代码 代码内带详细解释 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="h
圆号本昊
2021/09/24
1.6K0
Android菜单 布局 表格布局
菜单权限表sql语句「建议收藏」
select m.* from t_menu m where m.state = ‘1’ and ((menu_type = 1 and exists (select 1 from v_user_menu b where m.menu_id = b.menu_id and b.sys_id = ‘3000’)) or (m.menu_type = 0 and exists (select 1 from v_user_menu b where m.menu_id = b.parent_id and b.sys_id = ‘3000’))) start with m.parent_id = ‘0’ connect by prior m.menu_id = m.parent_id order siblings by menu_order
全栈程序员站长
2022/11/16
6570
android 多条件筛选菜单效果
http://blog.csdn.net/u011733020/article/details/51002746
bear_fish
2018/09/20
3.5K0
android 多条件筛选菜单效果
Android仿qq侧滑菜单
我们经常能看到各种app中都有应用侧滑菜单(SlidingMenu),效果很好的一种显示方式,今天我就向大家展示可以说是很简单就能实现和qq的侧滑菜单很相似的效果。现在侧滑菜单的框架在github上也有很多,有兴趣的可以去搜一下,今天我就给大家展示一个简单的仿qq侧滑菜单的例子。
earthchen
2020/09/24
1.2K0
android下拉五级菜单联动
本人是一个不擅长Android的开发的,但是这几天在做联通的一个服务器配件管理系统,做完B/S的又要写C/S的,老板要求没办法。在做的过程中遇到了一个下拉菜单联动的问题,以前没做过,突然做还真有点不知所措了,在网上找了一大堆发现数据都是本地的应该构造好了,没卵用,不过也给了我很多想发,一开始想到用树去解决,可是每个树的节点个数不知道,要是动态创建就会很麻烦。最后在自己的努力下来构造JSON数据格式,其实弄明白感觉很简单,就是并保存你的上一级是谁,你的下一级是谁就可以了,但是数据库做的表没有结构可言很难构造出来有用的数据结构。
张泽旭
2018/12/10
2.5K0
android下拉五级菜单联动
css实现导航菜单下拉效果「建议收藏」
效果如下图,现在什么样式也没有,我们需要对HTML进行一些样式上的调整让其看起来好看一下。
全栈程序员站长
2022/09/19
2.8K0
css实现导航菜单下拉效果「建议收藏」
仿path菜单button的实现「建议收藏」
path刚出来时。其菜单button也算是让大多数人感到了惊艳,如今看来事实上是非常easy的就是动画的结合。
全栈程序员站长
2022/07/10
4570
仿path菜单button的实现「建议收藏」
点击加载更多

相似问题

芹菜-如何使用多个队列?

12

芹菜守护进程的多个队列

17

在芹菜中,使用多个队列是否对性能有重大影响?

10

Django芹菜多个工作进程和多个队列

10

在芹菜中排列多个队列的优先顺序?

38
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文