I've this regex in my node.js script:
const commentPattern = new RegExp(
'(\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*+/)|(//.*)',
'g'
);
which I use to extract comments from open source Java projects.
I've found out that some piece of commits stops my script. This is due to 'Catastrophic Backtracking' and I was looking for a way to catch it or prevent it in order to allow my code to keep running even after this cases.
Here is an example of code that blocks the execution of the script:
import android.content.res.Resources;
import android.os.Handler;
import android.preference.PreferenceFragment;
import android.view.ViewGroup;
* Provides the regex to identify domain HTTP(S) protocol and/or 'www' sub-domain.
*
* Used to format user-facing {@link String}'s in certain preferences.
*/
public static final String ADDRESS_FORMAT_REGEX = "^(https?://(w{3})?|www\\.)";
/**
// Used to ensure that settings are only fetched once throughout the lifecycle of the fragment
private boolean mShouldFetch;
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container,
Bundle savedInstanceState) {
// use a wrapper to apply the Calypso theme
Context themer = new ContextThemeWrapper(getActivity(), R.style.Calypso_SiteSettingsTheme);
LayoutInflater localInflater = inflater.cloneInContext(themer);
View view = super.onCreateView(localInflater, container, savedInstanceState);
if (view != null) {
setupPreferenceList((ListView) view.findViewById(android.R.id.list), getResources());
}
return view;
}
@Override
public void onChildViewAdded(View parent, View child) {
if (child.getId() == android.R.id.title && child instanceof TextView) {
// style preference category title views
TextView title = (TextView) child;
WPPrefUtils.layoutAsBody2(title);
} else {
// style preference title views
TextView title = (TextView) child.findViewById(android.R.id.title);
if (title != null) WPPrefUtils.layoutAsSubhead(title);
}
}
@Override
public void onChildViewRemoved(View parent, View child) {
// NOP
}
@Override
I'm using Node.js version 8.6.0, I also tried on v9.8.0.