用(10+2)*5法来对付惰性

本文介绍了一种适用于拖延症患者、易分心者及任务积压者的高效时间管理方法——(10+2)*5。通过使用计时器,将工作划分为多个10分钟专注+2分钟休息的周期,帮助提高工作效率,轻松应对大量待办事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

你已经有一个长长的ToDo列表了,可你总提不起精神去完成它们。43folder上介绍一种时间管理方法,可以将你从惰性中拯救出来。

谁需要这种方法

  • 做事拖拖拉拉
  • 容易分心
  • 上网强迫症患者
  • 攒了一大堆琐事要处理的人
  • 对如何将规模较大的工作分批处理有困难的人

你需要什么

  1. 一个计时器
    1. 必须设置简单
    2. 超市里卖的那种厨房用计时器就很好
    3. 也可以是一个计时器软件
  2. 一个简化过的行事列表(Todo List)
    1. 能够在十分钟一个周期的条件下去做的事情(不需要是十分钟内能完成的)。
    2. 按照GTD原则:下一件能马上开始动手去做的工作。
  3. 一个小时的时间
  4. 你那拖拖拉拉的臭毛病

如何实施

(10+2)*5是这么来的:

  • 10-在十分钟内全心全意的只做一件事情,100%投入工作状态,时间到了再休息。
  • 2-十分钟一到,休息两分钟,喝喝茶,上上网,干什么都行。但是两分钟一到,立刻回到工作状态,开始列表中的下一件事。
  • *5-一个小时,刚好把这种方式循环五次。

重要的原则

  • 不需要在十分钟内非得完成你的工作,只需要取得进展就可以。
  • 如果还没到10分钟就完成了,停止,休息2分钟,然后再进入下一个10分钟。
  • 不要跳过休息时间!不允许你这么做,时间一到必须休息。

会产生什么结果

度过充实高效的一小时工作时间。


转贴自生活帮

<think>首先,用户的问题是关于理解正则表达式:`^(?:.*/)?([^_]+)[-_](\d+\.\d+\.\d+.*)\.jar$` 的作用。我需要解释这个正则表达式的含义和用途。 正则表达式用于匹配和解析字符串。这个特定的正则表达式似乎用于匹配JAR文件的路径或名称,提取特定部分。 让我分解这个正则表达式: - `^`:匹配字符串的开头。 - `(?:.*/)?`:这是一个非捕获组(因为使用了`?:`)。它匹配零个或一个出现(`?`表示可选)的任意字符序列(`.*`)后跟一个斜杠`/`。这表示路径部分,可能是目录路径,但它是可选的。 - `([^_]+)`:这是一个捕获组,匹配一个或多个字符,但排除下划线`_`(`[^_]`表示不包含下划线的字符)。所以,它会匹配一个字符串直到遇到下划线或结束。 - `[-_]`:匹配一个字符,要么是连字符`-`要么是下划线`_`。 - `(\d+\.\d+\.\d+.*)`:这是另一个捕获组。它匹配: - `\d+`:一个或多个数字。 - `\.`:一个点(转义了)。 - `\d+\.\d+`:重复,表示类似版本号的格式,如`1.2.3`。 - `.*`:匹配任意字符序列,包括点后可能还有更多内容,如`-SNAPSHOT`或类似。 - `\.jar`:匹配字符串`.jar`。 - `$`:匹配字符串的结尾。 所以,整体上,这个正则表达式用于匹配以`.jar`结尾的文件名,文件名中包含一个部分(没有下划线)后跟一个连字符或下划线,然后是一个版本号格式(如`x.x.x`),最后是`.jar`。 用途:它可能用于解析JAR文件名,提取模块名和版本号。例如,对于一个字符串如`path/to/some-module_1.2.3.jar`,它会提取: - 第一个捕获组:`some-module`(因为`[^_]+`匹配到`some-module`,但注意`-`被包括在`[^_]`中?等一下,`[^_]`表示不包含下划线的字符,所以连字符`-`是允许的,因为它在方括号内是字面意思)。 在`[^_]`中,`^`表示否定,所以它匹配任何不是下划线的字符。连字符`-`在方括号内时,如果不是第一个或指定范围,它会被视为字面字符。所以`[^_]`匹配任何非下划线字符,包括字母、数字、连字符等。 然后`[-_]`匹配一个单独的`-`或`_`。 所以,在`some-module_1.2.3.jar`: - `([^_]+)`会匹配`some-module`,因为`[^_]+`匹配所有非下划线字符,但`some-module`包含连字符`-`,而`-`不是下划线,所以它匹配整个`some-module`直到遇到下划线?等一下,不对。 问题:`[^_]+`会匹配一个或多个非下划线字符。在字符串`some-module_1.2.3.jar`中,从开始位置,`[^_]+`会匹配`some-module`,因为`-`不是下划线,所以它匹配整个`some-module`,但`some-module`后是下划线,所以`[^_]+`匹配`some-module`(不包括下划线),然后`[-_]`匹配下划线`_`。 类似地,如果文件名是`some_module-1.2.3.jar`,`([^_]+)`会匹配`some`(因为遇到下划线就停),然后`[-_]`匹配`_`,然后`module`被包括在后面的部分?等一下,不,`([^_]+)`后直接是`[-_]`,所以它只匹配到第一个下划线前的部分。 在`some_module-1.2.3.jar`: - `([^_]+)`匹配`some`(因为下划线是分隔符)。 - `[-_]`匹配`_`。 - 然后`(\d+\.\d+\.\d+.*)`匹配`module-1.2.3`?等一下,不,`\d+`期望数字,但`module`不是数字,所以匹配会失败?除非版本号部分直接跟着。 正则表达式是`[-_](\d+\.\d+\.\d+.*)`,所以`[-_]`后必须是数字开始,像版本号。 所以,它假设文件名结构是:一个名称部分(可能包含连字符但不包含下划线),后跟一个分隔符(-或_),然后是一个版本号(如x.x.x),后跟任意字符,最后是.jar。 在捕获组中: - 第一个捕获组`([^_]+)`:名称部分,排除下划线。 - 第二个捕获组`(\d+\.\d+\.\d+.*)`:版本号部分,包括可能的额外后缀。 例如: - 输入:`lib/example-api_2.1.0-SNAPSHOT.jar` - 匹配:`^(?:.*/)?` 匹配 `lib/`(可选路径) - `([^_]+)` 匹配 `example-api`?等一下,`[^_]+` 匹配非下划线字符,但 `example-api` 包含 `-`,所以它匹配 `example-api`,因为 `-` 不是下划线。 - 然后 `[-_]` 匹配 `_` - 然后 `(\d+\.\d+\.\d+.*)` 匹配 `2.1.0-SNAPSHOT` - 然后 `.jar` 所以提取:组1 = `example-api`,组2 = `2.1.0-SNAPSHOT` 如果输入是 `example-module-1.0.0.jar`: - `([^_]+)` 匹配 `example-module`(因为没有下划线) - `[-_]` 匹配 `-` - 然后 `(\d+\.\d+\.\d+.*)` 匹配 `1.0.0` - 所以组1 = `example-module`,组2 = `1.0.0` 现在,关于非捕获组 `(?:.*/)?`:它用于处理可选的前缀路径,但不捕获它,只捕获文件名部分。 在解释中,我需要使用中文,因为用户要求使用中文回答。 另外,用户提到了系统级指令,包括数学表达式格式,但这里没有数学,所以不需要。对于正则表达式,我应该用代码块显示。 在回答中,我需要结构清晰,逐步解释。 最后,生成相关问题,类似于示例。 用户提供了引用,但在这个上下文中,引用是关于其他正则表达式例子的,所以我应该参考它们如果相关,但主要解释这个表达式。 引用: - [^1]:关于手机号正则表达式,不直接相关。 - [^2]:关于 `?:` 的作用,解释非捕获组。 - [^3]:关于 `.+?` 和 `.*?`,但这里没有使用惰性匹配。 - [^4]:关于基本元字符。 所以,我可以引用 [^2] 来解释 `?:`。 现在,构建回答: 1. 介绍正则表达式的整体用途。 2. 逐步分解每个部分。 3. 举例说明。 4. 总结作用。 5. 生成相关问题。 使用系统指令: - 行内代码用反引号,如 `$`。 - 独立公式没有,所以忽略。 - 中文回答。 - 生成相关问题。 - 引用标识:如果引用,添加 [^n]。 在回答中,引用提供的引用 [^2] 来解释 `?:`。 最终,正则表达式的作用:用于解析JAR文件名,提取模块名(或名称部分)和版本号。</think>### 正则表达式 `^(?:.*/)?([^_]+)[-_](\d+\.\d+\.\d+.*)\.jar$` 的解释 这个正则表达式主要用于匹配和解析 JAR 文件的路径或名称,特别适用于从文件名中提取模块名(或名称部分)和版本号。它假设文件名遵循一种常见模式:名称部分后跟一个分隔符(连字符 `-` 或下划线 `_`),然后是一个类似版本号的字符串(如 `x.x.x`),最后以 `.jar` 结尾。正则表达式还支持可选的前缀路径(如目录路径)。下面我将逐步分解其结构和用途,确保解释清晰易懂。 #### 正则表达式分解 我将整个表达式拆分为关键部分,逐一解释。每个部分都基于正则表达式的基本元字符(如 `.`、`*`、`+`、`?` 等),您可以参考通用文档或引用 [^4] 了解基础概念。 1. **`^`** - 表示匹配字符串的开头。确保匹配从输入字符串的起始位置开始。 2. **`(?:.*/)?`** - `(?: ... )` 是一个非捕获组(non-capturing group),表示组内的内容不会被单独捕获(即不会在匹配结果中作为独立组提取)。这区别于普通捕获组 `( ... )`,后者会保存匹配内容供后续引用(参考引用 [^2])。 - `.*` 匹配任意字符序列(除换行符外),0 次或多次。这里的 `.` 表示任意单个字符。 - `/` 匹配字面斜杠字符(常用于路径分隔符)。 - `?` 表示前面的组(即 `(?:.*/)`)是可选的(出现 0 次或 1 次)。 - **作用**:处理文件路径的前缀部分(如 `path/to/` 或 `lib/`),但忽略它,因为它不是核心信息。例如,在 `lib/example-api_1.2.3.jar` 中,它匹配 `lib/` 但不会保存该部分。 3. **`([^_]+)`** - `( ... )` 是一个捕获组,表示匹配的内容会被提取并保存(可通过 `$1` 或类似方式引用)。 - `[^_]+` 匹配一个或多个(`+`)非下划线字符(`[^_]` 表示字符类,排除 `_`)。 - **作用**:提取名称部分(如模块名),该部分不能包含下划线,但可以包含连字符 `-` 或其他字符。例如,在 `example-module_1.0.0.jar` 中,它匹配 `example-module`。 4. **`[-_]`** - 匹配一个字符,该字符必须是连字符 `-` 或下划线 `_`(`[-_]` 表示字符类,包含 `-` 和 `_`)。 - **作用**:作为名称部分和版本号部分的分隔符。例如,在 `api_2.1.0.jar` 中,它匹配 `_`。 5. **`(\d+\.\d+\.\d+.*)`** - `( ... )` 是另一个捕获组,用于提取版本号。 - `\d+` 匹配一个或多个数字(`\d` 表示数字)。 - `\.` 匹配字面点字符(`.` 需要转义,否则表示任意字符)。 - `\d+\.\d+` 重复模式,表示类似版本号的格式(如 `1.2.3`)。 - `.*` 匹配任意字符序列 0 次或多次,用于处理版本号后的额外后缀(如 `-SNAPSHOT`)。 - **作用**:提取版本号部分,支持基本格式(`x.x.x`)和可选后缀。例如,在 `utils-1.0.0-beta.jar` 中,它匹配 `1.0.0-beta`。 6. **`\.jar$`** - `\.jar` 匹配字面字符串 `.jar`(`.` 转义为点字符)。 - `$` 表示匹配字符串的结尾。 - **作用**:确保文件名以 `.jar` 结尾,防止匹配不完整的路径。 #### 整体匹配流程和用途 - **匹配逻辑**: 正则表达式要求字符串以路径(可选)开始,然后是一个不含下划线的名称部分,后跟 `-` 或 `_`,接着是版本号(必须包含至少三个数字点分隔的部分),最后以 `.jar` 结尾。匹配成功后,会提取两个关键部分: - **组 1 (`$1`)**:名称部分(如模块名)。 - **组 2 (`$2`)**:版本号部分(包括后缀)。 - **典型用例**: 这个表达式常用于软件开发中,解析 JAR 文件名以自动化版本管理、依赖处理或部署脚本。例如: - 输入字符串:`/lib/core-module_2.3.4-RELEASE.jar` - 匹配结果:组 1 = `core-module`,组 2 = `2.3.4-RELEASE`。 - 输入字符串:`utils-1.0.0.jar`(无路径) - 匹配结果:组 1 = `utils`,组 2 = `1.0.0`。 - 无效输入:`invalid_name-1.2.jar`(版本号缺少一个点分隔部分)或 `test.jar`(缺少版本号)将不匹配,因为 `\d+\.\d+\.\d+` 要求三个数字部分。 - **优势与限制**: - 优势:灵活处理路径和文件名变体,提取关键信息。 - 限制:名称部分不能包含下划线(否则会提前截断),版本号必须至少有三个点分隔的数字段。如果文件名结构不严格遵循此模式(如使用其他分隔符),匹配可能失败。 #### 示例代码(Python 演示) 以下 Python 代码演示如何使用该正则表达式解析文件名: ```python import re pattern = r'^(?:.*/)?([^_]+)[-_](\d+\.\d+\.\d+.*)\.jar$' test_strings = [ "lib/example-api_1.2.3-SNAPSHOT.jar", # 有效,带路径 "core-module-2.0.0.jar", # 有效,无路径 "invalid_name-1.2.jar" # 无效,版本号格式错误 ] for s in test_strings: match = re.match(pattern, s) if match: print(f"字符串: '{s}' -> 模块名: '{match.group(1)}', 版本号: '{match.group(2)}'") else: print(f"字符串: '{s}' -> 不匹配") ``` **输出**: ``` 字符串: 'lib/example-api_1.2.3-SNAPSHOT.jar' -> 模块名: 'example-api', 版本号: '1.2.3-SNAPSHOT' 字符串: 'core-module-2.0.0.jar' -> 模块名: 'core-module', 版本号: '2.0.0' 字符串: 'invalid_name-1.2.jar' -> 不匹配 ``` #### 总结 该正则表达式主要用于自动化处理 JAR 文件名,提取模块名和版本号。它适用于构建工具(如 Maven 或 Gradle)或部署脚本中,帮助识别和管理依赖版本。理解其结构后,您可以根据实际需求调整(如允许名称部分包含下划线)。 如果您有特定用例或需要修改表达式,请提供更多细节!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值