Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式匹配六个空格,后跟最多31个字母数字_Regex - Fatal编程技术网

Regex 正则表达式匹配六个空格,后跟最多31个字母数字

Regex 正则表达式匹配六个空格,后跟最多31个字母数字,regex,Regex,这一天快结束了,这让我很恼火——总有一天我会找到时间好好学习正则表达式,因为我知道从文本中提取信息可以节省很多时间 我需要匹配与以下签名匹配的字符串: 6个空格后跟最多31个字母数字(或空格),然后该行上不再有字母数字文本 例如 “样本标题”很好 “样本标题10^21/1”-不应匹配 “样本标题样本”-不应匹配 我已经正确地匹配了第一位的^(\s{6}[\w\s]{1,31}),但我似乎无法让它只选择在初始匹配之后没有任何文本的行 感谢您的帮助 编辑: 我已经更新了文本,因为很多人都注意到,我匆

这一天快结束了,这让我很恼火——总有一天我会找到时间好好学习正则表达式,因为我知道从文本中提取信息可以节省很多时间

我需要匹配与以下签名匹配的字符串:

6个空格后跟最多31个字母数字(或空格),然后该行上不再有字母数字文本

例如

“样本标题”很好 “样本标题10^21/1”-不应匹配 “样本标题样本”-不应匹配 我已经正确地匹配了第一位的
^(\s{6}[\w\s]{1,31})
,但我似乎无法让它只选择在初始匹配之后没有任何文本的行

感谢您的帮助

编辑:


我已经更新了文本,因为很多人都注意到,我匆忙输入的原始样本实际上都测试得很好

^(\s{6}[\w\s]{1,31})$

您可以使用
$
指示行的结尾,使用
\s*
允许在结尾处使用可选空格

^\s{6}[\w\s]{1,31}\s*$
但是,您的样本与您所说的您想要的不匹配。它们只以四个空格开始,而不是六个空格,在最后一个示例中,“
sampleheading-sample

在31个字符的限制内,因此它也匹配。(中间的示例也在长度范围内,但其中包含非单词字符,因此不匹配)。这就是你想要的吗?

你不是简单地说“匹配6个空格,后跟31个字母数字”吗?这里没有“不再有字母数字”的概念


我认为到目前为止你所拥有的是好的(!),但你需要遵循它(比如说)[^\w]-即“不是字母数字”。

使用
$
匹配行尾:

^(\s{6}[\w\s]{1,31})$
或者,如果以后仍有要忽略的空间:

^(\s{6}[\w\s]{1,31})\s*$
试试这个:

^\s{6}[\w\s]{1,31}\W.*$

您可以利用一些正则表达式库函数来帮助解决这个问题:我认为您的示例是错误的。它们都不是以6个空格开头的。如果在开头添加两个空格,它们都与31个字母数字(或空格)匹配规则。抱歉-当我粘贴样本时,一些空格似乎丢失了-你是对的。更高版本提供了我所需要的内容-令人烦恼的是,它在我一直尝试使用的在线测试工具中不起作用,但在Jeff Wain建议的工具中工作良好。可能是我今天早些时候得到了答案,我只是使用了一个糟糕的测试工具!根据我对你目标的理解,检查你的测试样本是否有任何好处,这两个选项都不能满足你的需求x6.”a’应该不及格,但不会不及格
^\s{6}[\w\s]{1,31}\W.*$