我需要生成一个符合以下格式的正则表达式:
-1 LKSJDF LSAALSKJ~
Syjsdf
lkjdf
This block may contain multiple characters including digits, colons, etc. Any character other than a tilde.
~
我目前正在使用这个:
/(-\d|\d)\s([^$\~][a-zA-Z\s]*)\~\n/s
哪个匹配第一行罚款。我需要捕获开始模式的-1到60,空格之后的字直到第一个波形。然后,我需要捕获波形符号之间的所有文本。
首先,我并不是最强大的正则表达式,但是如果没有捕获波浪线,我就无法使用它。
答案 0 :(得分:1)
您可以使用
'/^(-?\d+)\s+([^~]*)~([^~]+)~/m'
请参阅demo
正则表达式匹配:
^
- 一行的开头(由于/m
修饰符^
不再与字符串的开头匹配)(-?\d+)
- (第1组)一个或零-
后跟一个或多个数字\s+
- 一个或多个空白符号(仅匹配制表符和常规空格,请改用\h+
)([^~]*)
- (第2组)除~
以外的零个或多个字符(您可以强制在第一行匹配这些字符,只需向否定字符添加\n\r
class - [^~\n\r]
)~
- 字面意思的代字号([^~]+)
- (第3组)除了波浪号~
- 文字尾随波浪号如果您需要仅匹配这些字符串,如果数字是-1到60之间的整数,则可以使用
'/^(-1|[1-5]?[0-9]|60)\s+([^~]*)~([^~]+)~/m'
请参阅another demo
这里,第一组匹配-1到60的整数,其中(-1|[1-5]?[0-9]|60)
交替组。 -1
和60
匹配文字数字,[1-5]?[0-9]
匹配1或5的一个或零(可选)数字(如果允许前导零,则替换为[0-5]?
)然后任何一个数字都可以跟随。