文字を一致させようとしていますが、大文字は1つだけ一致させる必要があります。たとえば :大文字を1つだけ一致させる正規表現
'Hello World' - 2 matches
'Hello WOrld' - 1 match
'HEllo WOrld' - 0 matches
は、これまでのところ私は/(?![A-Z]{1})/g
を持っているが、私は否定先読みが何であるかを誤解したと思います。
ありがとうございます!
文字を一致させようとしていますが、大文字は1つだけ一致させる必要があります。たとえば :大文字を1つだけ一致させる正規表現
'Hello World' - 2 matches
'Hello WOrld' - 1 match
'HEllo WOrld' - 0 matches
は、これまでのところ私は/(?![A-Z]{1})/g
を持っているが、私は否定先読みが何であるかを誤解したと思います。
ありがとうございます!
私は、AC#を呼び出すためにEdge.jsを使用して、この問題を解決するために管理Javascriptの正規表現で制限を回避することができました。
最終的なコードは次のように見てしまった:
const getPerson = edge.func(function() {/*
using System.Text.RegularExpressions;
using System.Threading.Tasks;
public class RegexReplacer {
public string PutSpacesBeforeCaps (string input) {
Regex regex = new Regex(@"((?<![0-9])(?<![A-Z])[A-Z](?![A-Z])(?![0-9]))");
return regex.Replace(input, " $1");
}
}
public class Startup {
public async Task<object> Invoke(dynamic input) {
RegexReplacer replacer = new RegexReplacer();
return replacer.PutSpacesBeforeCaps(input.ToString());
}
}
*/});
あなたの正規表現で前後参照を使用することができます。
/(?<![A-Z])[A-Z](?![A-Z])/
(?<![A-Z])
- 負の後読みを、前の文字が大文字の英字(?![A-Z])
ない場合はアサート - 、否定先読みアサート次の文字が大文字の英字でない場合EDIT: Javascriptが後読みをサポートしていないので、あなたがこの正規表現を使用することができます。
(?:^|[^A-Z])[A-Z](?![A-Z])
私は必要な正確に何だおかげで、しかし、私はこれを変換することができるか、JavaScriptでこれを使用していますか? –
ここで問題になるのは、大文字の前のスペースにマッチしているということです。キャプチャグループ0とは言いますが、存在しないようですか? –
見た目の欠如のため、キャプチャしていないグループ、つまり '(?:^ | [^ A-Z])'を使用する必要があります。これは、行頭または大文字ではないものと一致します。 – anubhava