技术问询:如何用Regex仅捕获CT之前的内容?
正则捕获CT之前内容的解决方案
嘿,我来帮你搞定这个只捕获CT之前内容的正则需求~下面分几种常见场景给你对应的方案,还有实际代码示例:
基础场景(CT为大写,内容无换行)
如果你的输入里CT是明确的大写,且要捕获的内容不包含换行符,用这个正则就够了:
^(.*?)\s*CT
正则各部分解释:
^:锚定字符串的起始位置,确保我们从开头开始匹配(.*?):非贪婪模式的捕获组,会匹配任意字符(除换行)直到遇到后面的CT,这样就不会把CT后面的内容也捞进来\s*:匹配0个或多个空白字符(空格、制表符都算),处理CT前面可能带空格的情况CT:精准匹配目标字符串
举个例子:
输入:"Chest X-ray CT Scan Report"
捕获到的内容:"Chest X-ray"
忽略大小写的场景
如果输入里可能出现小写的ct或者混合大小写的Ct/cT,可以加上不区分大小写的标志:
(?i)^(.*?)\s*CT
这里的(?i)是内联的不区分大小写标志,不用依赖语言层面的设置。
包含换行的场景
如果要捕获的内容里包含换行符,需要让.能匹配换行,用这个带单行模式的正则:
(?s)^(.*?)\s*CT
(?s)是内联的单行模式标志,此时.会匹配包括换行在内的所有字符。
代码示例(Python)
import re # 示例输入 input_str = "Abdomen Imaging CT Final Report\nPage 2" # 用支持换行的正则 match = re.search(r'(?s)^(.*?)\s*CT', input_str) if match: result = match.group(1) print(result) # 输出:Abdomen Imaging
代码示例(JavaScript)
const inputStr = "Head CT Scan Results"; const regex = /^(.*?)\s*CT/; const match = inputStr.match(regex); if (match) { console.log(match[1]); // 输出:Head }
内容的提问来源于stack exchange,提问作者Steve
相关产品推荐
相关产品推荐

